diff --git a/LICENSES_THIRD_PARTY b/LICENSES_THIRD_PARTY index b23938748d..69aa0f74bd 100644 --- a/LICENSES_THIRD_PARTY +++ b/LICENSES_THIRD_PARTY @@ -366,7 +366,6 @@ https://wiki.duraspace.org/display/DSPACE/Code+Contribution+Guidelines * FindBugs-Annotations (com.google.code.findbugs:annotations:3.0.1u2 - http://findbugs.sourceforge.net/) * MaxMind GeoIP Legacy API (com.maxmind.geoip:geoip-api:1.3.0 - https://github.com/maxmind/geoip-api-java) * JHighlight (com.uwyn:jhighlight:1.0 - https://jhighlight.dev.java.net/) - * DSpace TM-Extractors Dependency (org.dspace.dependencies:dspace-tm-extractors:1.0.1 - http://projects.dspace.org/dspace-pom/dspace-tm-extractors) * A Hibernate O/RM Module (org.hibernate:hibernate-core:4.2.21.Final - http://hibernate.org) * A Hibernate O/RM Module (org.hibernate:hibernate-ehcache:4.2.21.Final - http://hibernate.org) * Hibernate Commons Annotations (org.hibernate.common:hibernate-commons-annotations:4.0.2.Final - http://hibernate.org) diff --git a/dspace-api/pom.xml b/dspace-api/pom.xml index fb6a90d965..16c6e4336b 100644 --- a/dspace-api/pom.xml +++ b/dspace-api/pom.xml @@ -343,14 +343,28 @@ org.dspace mets - - org.dspace.dependencies - dspace-tm-extractors - org.apache.jena apache-jena-libs pom + + + com.fasterxml.jackson.core + jackson-core + + + com.fasterxml.jackson.core + jackson-databind + + + org.slf4j + slf4j-log4j12 + + + log4j + log4j + + commons-cli @@ -364,10 +378,6 @@ org.apache.commons commons-collections4 - - org.apache.commons - commons-collections4 - org.apache.commons commons-dbcp2 @@ -382,8 +392,8 @@ commons-io - commons-lang - commons-lang + org.apache.commons + commons-lang3 org.apache.commons @@ -399,7 +409,7 @@ javax.servlet - servlet-api + javax.servlet-api provided @@ -417,8 +427,16 @@ jdom - log4j - log4j + org.apache.logging.log4j + log4j-api + + + org.apache.logging.log4j + log4j-1.2-api + + + org.apache.logging.log4j + log4j-core oro @@ -530,6 +548,10 @@ org.mockito mockito-core + + + log4j + log4j @@ -547,6 +569,10 @@ org.mockito mockito-core + + + log4j + log4j @@ -575,8 +601,8 @@ - commons-configuration - commons-configuration + org.apache.commons + commons-configuration2 com.maxmind.geoip2 @@ -615,7 +641,6 @@ com.google.guava guava - 19.0 diff --git a/dspace-api/src/main/java/org/dspace/administer/CreateAdministrator.java b/dspace-api/src/main/java/org/dspace/administer/CreateAdministrator.java index 7d603158ba..a58691e251 100644 --- a/dspace-api/src/main/java/org/dspace/administer/CreateAdministrator.java +++ b/dspace-api/src/main/java/org/dspace/administer/CreateAdministrator.java @@ -15,7 +15,7 @@ import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.CommandLineParser; import org.apache.commons.cli.Options; import org.apache.commons.cli.PosixParser; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.dspace.core.ConfigurationManager; import org.dspace.core.Context; import org.dspace.core.I18nUtil; diff --git a/dspace-api/src/main/java/org/dspace/administer/MetadataImporter.java b/dspace-api/src/main/java/org/dspace/administer/MetadataImporter.java index ac547f1839..aee48f71e8 100644 --- a/dspace-api/src/main/java/org/dspace/administer/MetadataImporter.java +++ b/dspace-api/src/main/java/org/dspace/administer/MetadataImporter.java @@ -21,6 +21,7 @@ import org.apache.xpath.XPathAPI; import org.dspace.authorize.AuthorizeException; import org.dspace.content.MetadataField; import org.dspace.content.MetadataSchema; +import org.dspace.content.MetadataSchemaEnum; import org.dspace.content.NonUniqueMetadataException; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.MetadataFieldService; @@ -248,7 +249,7 @@ public class MetadataImporter { // If the schema is not provided default to DC if (schema == null) { - schema = MetadataSchema.DC_SCHEMA; + schema = MetadataSchemaEnum.DC.getName(); } diff --git a/dspace-api/src/main/java/org/dspace/administer/RegistryLoader.java b/dspace-api/src/main/java/org/dspace/administer/RegistryLoader.java index f1b8a0684c..b2f7280252 100644 --- a/dspace-api/src/main/java/org/dspace/administer/RegistryLoader.java +++ b/dspace-api/src/main/java/org/dspace/administer/RegistryLoader.java @@ -17,7 +17,7 @@ import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.TransformerException; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.apache.xpath.XPathAPI; import org.dspace.authorize.AuthorizeException; import org.dspace.content.BitstreamFormat; @@ -47,7 +47,7 @@ public class RegistryLoader { /** * log4j category */ - private static Logger log = Logger.getLogger(RegistryLoader.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(RegistryLoader.class); protected static BitstreamFormatService bitstreamFormatService = ContentServiceFactory.getInstance() .getBitstreamFormatService(); 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 0bf17b8d9b..ea95be7e72 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 @@ -27,7 +27,7 @@ import java.util.UUID; import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.dspace.authority.AuthorityValue; import org.dspace.authority.factory.AuthorityServiceFactory; import org.dspace.authority.service.AuthorityValueService; @@ -35,6 +35,7 @@ import org.dspace.content.Collection; import org.dspace.content.Item; import org.dspace.content.MetadataField; import org.dspace.content.MetadataSchema; +import org.dspace.content.MetadataSchemaEnum; import org.dspace.content.MetadataValue; import org.dspace.content.authority.Choices; import org.dspace.content.factory.ContentServiceFactory; @@ -199,7 +200,7 @@ public class DSpaceCSV implements Serializable { } // Check that the scheme exists - if (!StringUtils.equals(metadataSchema, "relation")) { + if (!StringUtils.equals(metadataSchema, MetadataSchemaEnum.RELATION.getName())) { MetadataSchema foundSchema = metadataSchemaService.find(c, metadataSchema); if (foundSchema == null) { throw new MetadataImportInvalidHeadingException(clean[0], diff --git a/dspace-api/src/main/java/org/dspace/app/bulkedit/MetadataImport.java b/dspace-api/src/main/java/org/dspace/app/bulkedit/MetadataImport.java index ef19942b55..90c8df864c 100644 --- a/dspace-api/src/main/java/org/dspace/app/bulkedit/MetadataImport.java +++ b/dspace-api/src/main/java/org/dspace/app/bulkedit/MetadataImport.java @@ -26,8 +26,8 @@ import org.apache.commons.cli.HelpFormatter; import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; import org.apache.commons.cli.PosixParser; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.authority.AuthorityValue; import org.dspace.authority.factory.AuthorityServiceFactory; import org.dspace.authority.service.AuthorityValueService; @@ -37,6 +37,7 @@ import org.dspace.content.DSpaceObject; import org.dspace.content.Entity; import org.dspace.content.EntityType; import org.dspace.content.Item; +import org.dspace.content.MetadataSchemaEnum; import org.dspace.content.MetadataValue; import org.dspace.content.Relationship; import org.dspace.content.RelationshipType; @@ -102,7 +103,7 @@ public class MetadataImport { /** * Logger */ - protected static final Logger log = Logger.getLogger(MetadataImport.class); + protected static final Logger log = org.apache.logging.log4j.LogManager.getLogger(MetadataImport.class); protected final AuthorityValueService authorityValueService; @@ -356,7 +357,7 @@ public class MetadataImport { // Add the metadata to the item List relationships = new LinkedList<>(); for (BulkEditMetadataValue dcv : whatHasChanged.getAdds()) { - if (StringUtils.equals(dcv.getSchema(), "relation")) { + if (StringUtils.equals(dcv.getSchema(), MetadataSchemaEnum.RELATION.getName())) { if (!StringUtils.equals(dcv.getElement(), "type")) { relationships.add(dcv); @@ -637,14 +638,12 @@ public class MetadataImport { } - if (StringUtils.equals(schema, "relation")) { + if (StringUtils.equals(schema, MetadataSchemaEnum.RELATION.getName())) { List relationshipTypeList = relationshipTypeService - .findByLeftOrRightLabel(c, element); + .findByLeftOrRightLabel(c, element); for (RelationshipType relationshipType : relationshipTypeList) { for (Relationship relationship : relationshipService - .findByItemAndRelationshipType(c, - item, - relationshipType)) { + .findByItemAndRelationshipType(c, item, relationshipType)) { relationshipService.delete(c, relationship); relationshipService.update(c, relationship); } @@ -705,11 +704,12 @@ public class MetadataImport { boolean left = false; List acceptableRelationshipTypes = new LinkedList<>(); String url = handleService.resolveToURL(c, value); - if (UUIDUtils.fromString(value) == null && StringUtils.isNotBlank(url)) { + UUID uuid = UUIDUtils.fromString(value); + if (uuid == null && StringUtils.isNotBlank(url)) { return; } - Entity relationEntity = entityService.findByItemId(c, UUID.fromString(value)); + Entity relationEntity = entityService.findByItemId(c, uuid); List leftRelationshipTypesForEntity = entityService.getLeftRelationshipTypes(c, entity); @@ -767,7 +767,7 @@ public class MetadataImport { } relationship.setRelationshipType(acceptedRelationshipType); relationship.setLeftPlace(relationshipService.findLeftPlaceByLeftItem(c, relationship.getLeftItem()) + 1); - relationship.setRightPlace(relationshipService.findRightPlaceByRightItem(c, relationship.getLeftItem()) + 1); + relationship.setRightPlace(relationshipService.findRightPlaceByRightItem(c, relationship.getRightItem()) + 1); Relationship persistedRelationship = relationshipService.create(c, relationship); relationshipService.update(c, persistedRelationship); } diff --git a/dspace-api/src/main/java/org/dspace/app/checker/ChecksumChecker.java b/dspace-api/src/main/java/org/dspace/app/checker/ChecksumChecker.java index 40cea2f786..28f7b6644a 100644 --- a/dspace-api/src/main/java/org/dspace/app/checker/ChecksumChecker.java +++ b/dspace-api/src/main/java/org/dspace/app/checker/ChecksumChecker.java @@ -23,7 +23,8 @@ import org.apache.commons.cli.OptionBuilder; import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; import org.apache.commons.cli.PosixParser; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.dspace.checker.BitstreamDispatcher; import org.dspace.checker.CheckerCommand; import org.dspace.checker.HandleDispatcher; @@ -48,7 +49,7 @@ import org.dspace.core.Utils; * @author Nathan Sarr */ public final class ChecksumChecker { - private static final Logger LOG = Logger.getLogger(ChecksumChecker.class); + private static final Logger LOG = LogManager.getLogger(ChecksumChecker.class); private static final BitstreamService bitstreamService = ContentServiceFactory.getInstance().getBitstreamService(); diff --git a/dspace-api/src/main/java/org/dspace/app/itemexport/ItemExportServiceImpl.java b/dspace-api/src/main/java/org/dspace/app/itemexport/ItemExportServiceImpl.java index 170aa0c620..73bd16c7d7 100644 --- a/dspace-api/src/main/java/org/dspace/app/itemexport/ItemExportServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/app/itemexport/ItemExportServiceImpl.java @@ -32,8 +32,8 @@ import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; import javax.mail.MessagingException; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.app.itemexport.service.ItemExportService; import org.dspace.content.Bitstream; import org.dspace.content.Bundle; @@ -42,7 +42,7 @@ import org.dspace.content.Community; import org.dspace.content.DSpaceObject; import org.dspace.content.Item; import org.dspace.content.MetadataField; -import org.dspace.content.MetadataSchema; +import org.dspace.content.MetadataSchemaEnum; import org.dspace.content.MetadataValue; import org.dspace.content.service.BitstreamService; import org.dspace.content.service.CommunityService; @@ -98,7 +98,7 @@ public class ItemExportServiceImpl implements ItemExportService { /** * log4j logger */ - private Logger log = Logger.getLogger(ItemExportServiceImpl.class); + private Logger log = org.apache.logging.log4j.LogManager.getLogger(ItemExportServiceImpl.class); protected ItemExportServiceImpl() { @@ -214,7 +214,7 @@ public class ItemExportServiceImpl implements ItemExportService { protected void writeMetadata(Context c, String schema, Item i, File destDir, boolean migrate) throws Exception { String filename; - if (schema.equals(MetadataSchema.DC_SCHEMA)) { + if (schema.equals(MetadataSchemaEnum.DC.getName())) { filename = "dublin_core.xml"; } else { filename = "metadata_" + schema + ".xml"; diff --git a/dspace-api/src/main/java/org/dspace/app/itemimport/ItemImportServiceImpl.java b/dspace-api/src/main/java/org/dspace/app/itemimport/ItemImportServiceImpl.java index 829594f448..1083876d69 100644 --- a/dspace-api/src/main/java/org/dspace/app/itemimport/ItemImportServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/app/itemimport/ItemImportServiceImpl.java @@ -55,10 +55,10 @@ import gr.ekt.bteio.loaders.OAIPMHDataLoader; import org.apache.commons.collections4.ComparatorUtils; import org.apache.commons.io.FileDeleteStrategy; import org.apache.commons.io.FileUtils; -import org.apache.commons.lang.RandomStringUtils; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.RandomStringUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.exception.ExceptionUtils; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.apache.xpath.XPathAPI; import org.dspace.app.itemimport.service.ItemImportService; import org.dspace.app.util.LocalSchemaFilenameFilter; @@ -74,6 +74,7 @@ import org.dspace.content.DSpaceObject; import org.dspace.content.Item; import org.dspace.content.MetadataField; import org.dspace.content.MetadataSchema; +import org.dspace.content.MetadataSchemaEnum; import org.dspace.content.WorkspaceItem; import org.dspace.content.service.BitstreamFormatService; import org.dspace.content.service.BitstreamService; @@ -124,7 +125,7 @@ import org.xml.sax.SAXException; * allow the registration of files (bitstreams) into DSpace. */ public class ItemImportServiceImpl implements ItemImportService, InitializingBean { - private final Logger log = Logger.getLogger(ItemImportServiceImpl.class); + private final Logger log = org.apache.logging.log4j.LogManager.getLogger(ItemImportServiceImpl.class); @Autowired(required = true) protected AuthorizeService authorizeService; @@ -677,7 +678,7 @@ public class ItemImportServiceImpl implements ItemImportService, InitializingBea Node schemaAttr = metadata.item(0).getAttributes().getNamedItem( "schema"); if (schemaAttr == null) { - schema = MetadataSchema.DC_SCHEMA; + schema = MetadataSchemaEnum.DC.getName(); } else { schema = schemaAttr.getNodeValue(); } diff --git a/dspace-api/src/main/java/org/dspace/app/itemupdate/ItemArchive.java b/dspace-api/src/main/java/org/dspace/app/itemupdate/ItemArchive.java index 8b07335904..2270d736a8 100644 --- a/dspace-api/src/main/java/org/dspace/app/itemupdate/ItemArchive.java +++ b/dspace-api/src/main/java/org/dspace/app/itemupdate/ItemArchive.java @@ -30,7 +30,7 @@ import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.app.util.LocalSchemaFilenameFilter; import org.dspace.authorize.AuthorizeException; import org.dspace.content.DSpaceObject; @@ -47,7 +47,7 @@ import org.w3c.dom.Document; * Encapsulates the Item in the context of the DSpace Archive Format */ public class ItemArchive { - private static final Logger log = Logger.getLogger(ItemArchive.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(ItemArchive.class); public static final String DUBLIN_CORE_XML = "dublin_core.xml"; diff --git a/dspace-api/src/main/java/org/dspace/app/itemupdate/MetadataUtilities.java b/dspace-api/src/main/java/org/dspace/app/itemupdate/MetadataUtilities.java index 82ed5f75a0..b51212ea2f 100644 --- a/dspace-api/src/main/java/org/dspace/app/itemupdate/MetadataUtilities.java +++ b/dspace-api/src/main/java/org/dspace/app/itemupdate/MetadataUtilities.java @@ -28,12 +28,13 @@ import javax.xml.transform.TransformerException; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.xpath.XPathAPI; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Item; import org.dspace.content.MetadataField; import org.dspace.content.MetadataSchema; +import org.dspace.content.MetadataSchemaEnum; import org.dspace.content.MetadataValue; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.ItemService; @@ -189,7 +190,7 @@ public class MetadataUtilities { NodeList metadata = XPathAPI.selectNodeList(document, "/dublin_core"); Node schemaAttr = metadata.item(0).getAttributes().getNamedItem("schema"); if (schemaAttr == null) { - schema = MetadataSchema.DC_SCHEMA; + schema = MetadataSchemaEnum.DC.getName(); } else { schema = schemaAttr.getNodeValue(); } diff --git a/dspace-api/src/main/java/org/dspace/app/mediafilter/ExcelFilter.java b/dspace-api/src/main/java/org/dspace/app/mediafilter/ExcelFilter.java index 28db4cea8a..c17d168c04 100644 --- a/dspace-api/src/main/java/org/dspace/app/mediafilter/ExcelFilter.java +++ b/dspace-api/src/main/java/org/dspace/app/mediafilter/ExcelFilter.java @@ -11,7 +11,7 @@ import java.io.InputStream; import java.nio.charset.StandardCharsets; import org.apache.commons.io.IOUtils; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.apache.poi.POITextExtractor; import org.apache.poi.extractor.ExtractorFactory; import org.apache.poi.hssf.extractor.ExcelExtractor; @@ -36,7 +36,7 @@ import org.dspace.content.Item; */ public class ExcelFilter extends MediaFilter { - private static Logger log = Logger.getLogger(ExcelFilter.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(ExcelFilter.class); public String getFilteredName(String oldFilename) { return oldFilename + ".txt"; diff --git a/dspace-api/src/main/java/org/dspace/app/mediafilter/MediaFilterCLITool.java b/dspace-api/src/main/java/org/dspace/app/mediafilter/MediaFilterCLITool.java index fb9a120aa3..74751aec7e 100644 --- a/dspace-api/src/main/java/org/dspace/app/mediafilter/MediaFilterCLITool.java +++ b/dspace-api/src/main/java/org/dspace/app/mediafilter/MediaFilterCLITool.java @@ -22,7 +22,7 @@ import org.apache.commons.cli.Option; import org.apache.commons.cli.OptionBuilder; import org.apache.commons.cli.Options; import org.apache.commons.cli.PosixParser; -import org.apache.commons.lang.ArrayUtils; +import org.apache.commons.lang3.ArrayUtils; import org.dspace.app.mediafilter.factory.MediaFilterServiceFactory; import org.dspace.app.mediafilter.service.MediaFilterService; import org.dspace.content.Collection; diff --git a/dspace-api/src/main/java/org/dspace/app/mediafilter/PDFFilter.java b/dspace-api/src/main/java/org/dspace/app/mediafilter/PDFFilter.java index 6f398dabde..10ad5469d7 100644 --- a/dspace-api/src/main/java/org/dspace/app/mediafilter/PDFFilter.java +++ b/dspace-api/src/main/java/org/dspace/app/mediafilter/PDFFilter.java @@ -16,7 +16,7 @@ import java.io.InputStream; import java.io.OutputStreamWriter; import java.io.Writer; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.text.PDFTextStripper; import org.dspace.content.Item; @@ -30,7 +30,7 @@ import org.dspace.core.ConfigurationManager; */ public class PDFFilter extends MediaFilter { - private static Logger log = Logger.getLogger(PDFFilter.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(PDFFilter.class); @Override public String getFilteredName(String oldFilename) { diff --git a/dspace-api/src/main/java/org/dspace/app/mediafilter/PowerPointFilter.java b/dspace-api/src/main/java/org/dspace/app/mediafilter/PowerPointFilter.java index e0345ed3e8..86b7096f68 100644 --- a/dspace-api/src/main/java/org/dspace/app/mediafilter/PowerPointFilter.java +++ b/dspace-api/src/main/java/org/dspace/app/mediafilter/PowerPointFilter.java @@ -10,7 +10,7 @@ package org.dspace.app.mediafilter; import java.io.ByteArrayInputStream; import java.io.InputStream; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.apache.poi.POITextExtractor; import org.apache.poi.extractor.ExtractorFactory; import org.apache.poi.hslf.extractor.PowerPointExtractor; @@ -23,7 +23,7 @@ import org.dspace.content.Item; */ public class PowerPointFilter extends MediaFilter { - private static Logger log = Logger.getLogger(PowerPointFilter.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(PowerPointFilter.class); @Override public String getFilteredName(String oldFilename) { diff --git a/dspace-api/src/main/java/org/dspace/app/mediafilter/WordFilter.java b/dspace-api/src/main/java/org/dspace/app/mediafilter/WordFilter.java deleted file mode 100644 index 5051c01fd4..0000000000 --- a/dspace-api/src/main/java/org/dspace/app/mediafilter/WordFilter.java +++ /dev/null @@ -1,93 +0,0 @@ -/** - * The contents of this file are subject to the license and copyright - * detailed in the LICENSE and NOTICE files at the root of the source - * tree and available online at - * - * http://www.dspace.org/license/ - */ -package org.dspace.app.mediafilter; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; - -import org.apache.log4j.Logger; -import org.dspace.content.Item; -import org.textmining.extraction.TextExtractor; -import org.textmining.extraction.word.WordTextExtractorFactory; - -/* - * - * to do: helpful error messages - can't find mediafilter.cfg - can't - * instantiate filter - bitstream format doesn't exist. - * - */ -public class WordFilter extends MediaFilter { - - private static Logger log = Logger.getLogger(WordFilter.class); - - @Override - public String getFilteredName(String oldFilename) { - return oldFilename + ".txt"; - } - - /** - * @return String bundle name - */ - @Override - public String getBundleName() { - return "TEXT"; - } - - /** - * @return String bitstreamformat - */ - @Override - public String getFormatString() { - return "Text"; - } - - /** - * @return String description - */ - @Override - public String getDescription() { - return "Extracted text"; - } - - /** - * @param currentItem item - * @param source source input stream - * @param verbose verbose mode - * @return InputStream the resulting input stream - * @throws Exception if error - */ - @Override - public InputStream getDestinationStream(Item currentItem, InputStream source, boolean verbose) - throws Exception { - // get input stream from bitstream - // pass to filter, get string back - try { - WordTextExtractorFactory factory = new WordTextExtractorFactory(); - TextExtractor e = factory.textExtractor(source); - String extractedText = e.getText(); - - // if verbose flag is set, print out extracted text - // to STDOUT - if (verbose) { - System.out.println(extractedText); - } - - // generate an input stream with the extracted text - byte[] textBytes = extractedText.getBytes(); - ByteArrayInputStream bais = new ByteArrayInputStream(textBytes); - - return bais; // will this work? or will the byte array be out of scope? - } catch (IOException ioe) { - System.out.println("Invalid Word Format"); - log.error("Error detected - Word File format not recognized: " - + ioe.getMessage(), ioe); - throw ioe; - } - } -} diff --git a/dspace-api/src/main/java/org/dspace/app/requestitem/RequestItemHelpdeskStrategy.java b/dspace-api/src/main/java/org/dspace/app/requestitem/RequestItemHelpdeskStrategy.java index d9922a9179..a5f7341039 100644 --- a/dspace-api/src/main/java/org/dspace/app/requestitem/RequestItemHelpdeskStrategy.java +++ b/dspace-api/src/main/java/org/dspace/app/requestitem/RequestItemHelpdeskStrategy.java @@ -9,8 +9,8 @@ package org.dspace.app.requestitem; import java.sql.SQLException; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.content.Item; import org.dspace.core.ConfigurationManager; import org.dspace.core.Context; @@ -31,7 +31,7 @@ import org.springframework.beans.factory.annotation.Autowired; */ public class RequestItemHelpdeskStrategy extends RequestItemSubmitterStrategy { - private Logger log = Logger.getLogger(RequestItemHelpdeskStrategy.class); + private Logger log = org.apache.logging.log4j.LogManager.getLogger(RequestItemHelpdeskStrategy.class); @Autowired(required = true) protected EPersonService ePersonService; diff --git a/dspace-api/src/main/java/org/dspace/app/requestitem/RequestItemMetadataStrategy.java b/dspace-api/src/main/java/org/dspace/app/requestitem/RequestItemMetadataStrategy.java index 652f81f8c7..4d2f78408a 100644 --- a/dspace-api/src/main/java/org/dspace/app/requestitem/RequestItemMetadataStrategy.java +++ b/dspace-api/src/main/java/org/dspace/app/requestitem/RequestItemMetadataStrategy.java @@ -10,7 +10,7 @@ package org.dspace.app.requestitem; import java.sql.SQLException; import java.util.List; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.dspace.content.Item; import org.dspace.content.MetadataValue; import org.dspace.content.service.ItemService; diff --git a/dspace-api/src/main/java/org/dspace/app/requestitem/RequestItemServiceImpl.java b/dspace-api/src/main/java/org/dspace/app/requestitem/RequestItemServiceImpl.java index baf64e8657..7f3d086c03 100644 --- a/dspace-api/src/main/java/org/dspace/app/requestitem/RequestItemServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/app/requestitem/RequestItemServiceImpl.java @@ -10,7 +10,7 @@ package org.dspace.app.requestitem; import java.sql.SQLException; import java.util.Date; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.app.requestitem.dao.RequestItemDAO; import org.dspace.app.requestitem.service.RequestItemService; import org.dspace.content.Bitstream; @@ -28,7 +28,7 @@ import org.springframework.beans.factory.annotation.Autowired; */ public class RequestItemServiceImpl implements RequestItemService { - private final Logger log = Logger.getLogger(RequestItemServiceImpl.class); + private final Logger log = org.apache.logging.log4j.LogManager.getLogger(RequestItemServiceImpl.class); @Autowired(required = true) protected RequestItemDAO requestItemDAO; diff --git a/dspace-api/src/main/java/org/dspace/app/sfx/SFXFileReaderServiceImpl.java b/dspace-api/src/main/java/org/dspace/app/sfx/SFXFileReaderServiceImpl.java index 8d58347bc5..184f00a53e 100644 --- a/dspace-api/src/main/java/org/dspace/app/sfx/SFXFileReaderServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/app/sfx/SFXFileReaderServiceImpl.java @@ -15,8 +15,8 @@ import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.app.sfx.service.SFXFileReaderService; import org.dspace.content.DCPersonName; import org.dspace.content.Item; @@ -58,7 +58,7 @@ public class SFXFileReaderServiceImpl implements SFXFileReaderService { /** * log4j logger */ - private final Logger log = Logger.getLogger(SFXFileReaderServiceImpl.class); + private final Logger log = org.apache.logging.log4j.LogManager.getLogger(SFXFileReaderServiceImpl.class); protected SFXFileReaderServiceImpl() { } diff --git a/dspace-api/src/main/java/org/dspace/app/sherpa/SHERPAResponse.java b/dspace-api/src/main/java/org/dspace/app/sherpa/SHERPAResponse.java index 2384225562..269cad21f2 100644 --- a/dspace-api/src/main/java/org/dspace/app/sherpa/SHERPAResponse.java +++ b/dspace-api/src/main/java/org/dspace/app/sherpa/SHERPAResponse.java @@ -13,7 +13,7 @@ import java.util.List; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.dspace.app.util.XMLUtils; import org.w3c.dom.Document; import org.w3c.dom.Element; diff --git a/dspace-api/src/main/java/org/dspace/app/sherpa/SHERPAService.java b/dspace-api/src/main/java/org/dspace/app/sherpa/SHERPAService.java index d1680a687d..36c0c70f6d 100644 --- a/dspace-api/src/main/java/org/dspace/app/sherpa/SHERPAService.java +++ b/dspace-api/src/main/java/org/dspace/app/sherpa/SHERPAService.java @@ -7,7 +7,7 @@ */ package org.dspace.app.sherpa; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; @@ -16,7 +16,7 @@ import org.apache.http.client.methods.HttpGet; import org.apache.http.client.utils.URIBuilder; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.core.ConfigurationManager; public class SHERPAService { @@ -29,7 +29,7 @@ public class SHERPAService { /** * log4j category */ - private static final Logger log = Logger.getLogger(SHERPAService.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(SHERPAService.class); public SHERPAService() { HttpClientBuilder builder = HttpClientBuilder.create(); diff --git a/dspace-api/src/main/java/org/dspace/app/sherpa/submit/SHERPASubmitService.java b/dspace-api/src/main/java/org/dspace/app/sherpa/submit/SHERPASubmitService.java index 732c606ae8..44f2723539 100644 --- a/dspace-api/src/main/java/org/dspace/app/sherpa/submit/SHERPASubmitService.java +++ b/dspace-api/src/main/java/org/dspace/app/sherpa/submit/SHERPASubmitService.java @@ -11,8 +11,8 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.Set; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.app.sherpa.SHERPAResponse; import org.dspace.app.sherpa.SHERPAService; import org.dspace.content.Item; @@ -27,7 +27,7 @@ public class SHERPASubmitService { /** * log4j logger */ - private static Logger log = Logger.getLogger(SHERPASubmitService.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(SHERPASubmitService.class); public void setConfiguration(SHERPASubmitConfigurationService configuration) { this.configuration = configuration; diff --git a/dspace-api/src/main/java/org/dspace/app/sitemap/GenerateSitemaps.java b/dspace-api/src/main/java/org/dspace/app/sitemap/GenerateSitemaps.java index 9c0640e072..bf8bddcd8a 100644 --- a/dspace-api/src/main/java/org/dspace/app/sitemap/GenerateSitemaps.java +++ b/dspace-api/src/main/java/org/dspace/app/sitemap/GenerateSitemaps.java @@ -27,9 +27,9 @@ import org.apache.commons.cli.HelpFormatter; import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; import org.apache.commons.cli.PosixParser; -import org.apache.commons.lang.ArrayUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.content.Collection; import org.dspace.content.Community; import org.dspace.content.Item; @@ -52,7 +52,7 @@ public class GenerateSitemaps { /** * Logger */ - private static Logger log = Logger.getLogger(GenerateSitemaps.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(GenerateSitemaps.class); private static final CommunityService communityService = ContentServiceFactory.getInstance().getCommunityService(); private static final CollectionService collectionService = diff --git a/dspace-api/src/main/java/org/dspace/app/statistics/ReportGenerator.java b/dspace-api/src/main/java/org/dspace/app/statistics/ReportGenerator.java index 8c38cc842d..7e9b438547 100644 --- a/dspace-api/src/main/java/org/dspace/app/statistics/ReportGenerator.java +++ b/dspace-api/src/main/java/org/dspace/app/statistics/ReportGenerator.java @@ -28,7 +28,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import org.dspace.content.Item; -import org.dspace.content.MetadataSchema; +import org.dspace.content.MetadataSchemaEnum; import org.dspace.content.MetadataValue; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.ItemService; @@ -763,9 +763,10 @@ public class ReportGenerator { // build the referece // FIXME: here we have blurred the line between content and presentation // and it should probably be un-blurred - List title = itemService.getMetadata(item, MetadataSchema.DC_SCHEMA, "title", null, Item.ANY); + List title = itemService.getMetadata(item, MetadataSchemaEnum.DC.getName(), + "title", null, Item.ANY); List author = itemService - .getMetadata(item, MetadataSchema.DC_SCHEMA, "contributor", "author", Item.ANY); + .getMetadata(item, MetadataSchemaEnum.DC.getName(), "contributor", "author", Item.ANY); StringBuffer authors = new StringBuffer(); if (author.size() > 0) { diff --git a/dspace-api/src/main/java/org/dspace/app/statistics/StatisticsLoader.java b/dspace-api/src/main/java/org/dspace/app/statistics/StatisticsLoader.java index 02957bde4f..a151892db7 100644 --- a/dspace-api/src/main/java/org/dspace/app/statistics/StatisticsLoader.java +++ b/dspace-api/src/main/java/org/dspace/app/statistics/StatisticsLoader.java @@ -21,7 +21,7 @@ import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.apache.commons.lang.time.DateUtils; +import org.apache.commons.lang3.time.DateUtils; import org.dspace.core.ConfigurationManager; /** diff --git a/dspace-api/src/main/java/org/dspace/app/util/DCInput.java b/dspace-api/src/main/java/org/dspace/app/util/DCInput.java index 5564b66806..fee32293b2 100644 --- a/dspace-api/src/main/java/org/dspace/app/util/DCInput.java +++ b/dspace-api/src/main/java/org/dspace/app/util/DCInput.java @@ -13,8 +13,8 @@ import java.util.Map; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; -import org.apache.commons.lang.StringUtils; -import org.dspace.content.MetadataSchema; +import org.apache.commons.lang3.StringUtils; +import org.dspace.content.MetadataSchemaEnum; import org.dspace.core.Utils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -160,7 +160,7 @@ public class DCInput { // Default the schema to dublin core dcSchema = fieldMap.get("dc-schema"); if (dcSchema == null) { - dcSchema = MetadataSchema.DC_SCHEMA; + dcSchema = MetadataSchemaEnum.DC.getName(); } //check if the input have a language tag diff --git a/dspace-api/src/main/java/org/dspace/app/util/DCInputsReader.java b/dspace-api/src/main/java/org/dspace/app/util/DCInputsReader.java index b473e602b8..736458116e 100644 --- a/dspace-api/src/main/java/org/dspace/app/util/DCInputsReader.java +++ b/dspace-api/src/main/java/org/dspace/app/util/DCInputsReader.java @@ -21,7 +21,7 @@ import javax.xml.parsers.FactoryConfigurationError; import org.apache.commons.lang3.StringUtils; import org.dspace.content.Collection; -import org.dspace.content.MetadataSchema; +import org.dspace.content.MetadataSchemaEnum; import org.dspace.core.Utils; import org.dspace.services.factory.DSpaceServicesFactory; import org.w3c.dom.Document; @@ -464,7 +464,7 @@ public class DCInputsReader { String elem = field.get("dc-element"); String qual = field.get("dc-qualifier"); if ((schema == null) || (schema.equals(""))) { - schema = MetadataSchema.DC_SCHEMA; + schema = MetadataSchemaEnum.DC.getName(); } String schemaTest; @@ -474,7 +474,7 @@ public class DCInputsReader { Map fld = pg.get(j); if ((fld.get("dc-schema") == null) || ((fld.get("dc-schema")).equals(""))) { - schemaTest = MetadataSchema.DC_SCHEMA; + schemaTest = MetadataSchemaEnum.DC.getName(); } else { schemaTest = fld.get("dc-schema"); } diff --git a/dspace-api/src/main/java/org/dspace/app/util/DSpaceContextListener.java b/dspace-api/src/main/java/org/dspace/app/util/DSpaceContextListener.java index f2dcd593dc..b0289ec4a4 100644 --- a/dspace-api/src/main/java/org/dspace/app/util/DSpaceContextListener.java +++ b/dspace-api/src/main/java/org/dspace/app/util/DSpaceContextListener.java @@ -16,14 +16,14 @@ import java.util.Enumeration; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; /** * Class to initialize / cleanup resources used by DSpace when the web application * is started or stopped. */ public class DSpaceContextListener implements ServletContextListener { - private static Logger log = Logger.getLogger(DSpaceContextListener.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(DSpaceContextListener.class); /** * Initialize any resources required by the application. diff --git a/dspace-api/src/main/java/org/dspace/app/util/DailyFileAppender.java b/dspace-api/src/main/java/org/dspace/app/util/DailyFileAppender.java deleted file mode 100644 index db83bf19c4..0000000000 --- a/dspace-api/src/main/java/org/dspace/app/util/DailyFileAppender.java +++ /dev/null @@ -1,299 +0,0 @@ -/** - * The contents of this file are subject to the license and copyright - * detailed in the LICENSE and NOTICE files at the root of the source - * tree and available online at - * - * http://www.dspace.org/license/ - */ -package org.dspace.app.util; - -import java.io.File; -import java.io.IOException; -import java.net.UnknownHostException; -import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Date; - -import org.apache.commons.lang.time.DateUtils; -import org.apache.log4j.FileAppender; -import org.apache.log4j.helpers.LogLog; -import org.apache.log4j.spi.LoggingEvent; - -/** - * Special log appender for log4j. Adds the current date (ie. year-mon) to - * the end of the file name, so that rolling on to the next log is simply - * a case of starting a new one - no renaming of old logs. - * - * This is advisable if you are using Windows, and have multiple applications - * (ie. dspace, dspace-oai, dspace-sword) that all want to write to the same log file, - * as each would otherwise try to rename the old files during rollover. - * - * An example log4j.properties (one log per month, retains three months of logs) - * - * log4j.rootCategory=INFO, A1 - * log4j.appender.A1=org.dspace.app.util.DailyFileAppender - * log4j.appender.A1.File=@@log.dir@@/dspace.log - * log4j.appender.A1.DatePattern=yyyy-MM - * log4j.appender.A1.MaxLogs=3 - * log4j.appender.A1.layout=org.apache.log4j.PatternLayout - * log4j.appender.A1.layout.ConversionPattern=%d %-5p %c @ %m%n - */ -public class DailyFileAppender extends FileAppender { - /** - * The fixed date pattern to be used if one is not specified. - */ - private static final String DATE_PATTERN = "yyyy-MM-dd"; - - /** - * The folder under which daily folders are created. This can be a absolute path - * or relative path also. - * e.g. JavaLogs/CPRILog or F:/LogFiles/CPRILog - */ - private String mstrFileName; - - /** - * Used internally and contains the name of the date derived from current system date. - */ - private Date mstrDate = new Date(System.currentTimeMillis()); - - /** - * Holds the user specified DatePattern, - */ - private String mstrDatePattern = DATE_PATTERN; - - private boolean mMonthOnly = false; - - /** - * The date formatter object used for parsing the user specified DatePattern. - */ - private SimpleDateFormat mobjSDF; - - private boolean mWithHostName = false; - - private int mMaxLogs = 0; - - /** - * Default constructor. This is required as the appender class is dynamically - * loaded. - */ - public DailyFileAppender() { - super(); - } - - /* (non-Javadoc) - * @see org.apache.log4j.FileAppender#activateOptions() - */ - @Override - public void activateOptions() { - setFileName(); - cleanupOldFiles(); - super.activateOptions(); - } - - /*------------------------------------------------------------------------------ - * Getters - *----------------------------------------------------------------------------*/ - public String getDatePattern() { - return this.mstrDatePattern; - } - - @Override - public String getFile() { - return this.mstrFileName; - } - - public boolean getWithHost() { - return mWithHostName; - } - - public int getMaxLogs() { - return mMaxLogs; - } - - /*------------------------------------------------------------------------------ - * Setters - *----------------------------------------------------------------------------*/ - public void setDatePattern(String pstrPattern) { - this.mstrDatePattern = checkPattern(pstrPattern); - if (mstrDatePattern.contains("dd") || mstrDatePattern.contains("DD")) { - mMonthOnly = false; - } else { - mMonthOnly = true; - } - } - - @Override - public void setFile(String file) { - // Trim spaces from both ends. The users probably does not want - // trailing spaces in file names. - String val = file.trim(); - mstrFileName = val; - } - - public void setWithHost(boolean wh) { - mWithHostName = wh; - } - - public void setMaxLogs(int ml) { - mMaxLogs = ml; - } - - /*------------------------------------------------------------------------------ - * Methods - *----------------------------------------------------------------------------*/ - /* (non-Javadoc) - * @see org.apache.log4j.WriterAppender#subAppend(org.apache.log4j.spi.LoggingEvent) - */ - @Override - protected void subAppend(LoggingEvent pobjEvent) { - Date dtNow = new Date(System.currentTimeMillis()); - - boolean rollover = false; - - if (mMonthOnly) { - Calendar now = Calendar.getInstance(); - Calendar cur = Calendar.getInstance(); - now.setTime(dtNow); - cur.setTime(mstrDate); - rollover = !(now.get(Calendar.YEAR) == cur.get(Calendar.YEAR) && now.get(Calendar.MONTH) == cur - .get(Calendar.MONTH)); - } else { - rollover = !(DateUtils.isSameDay(dtNow, mstrDate)); - } - - if (rollover) { - try { - rollOver(dtNow); - } catch (IOException IOEx) { - LogLog.error("rollOver() failed!", IOEx); - } - } - - super.subAppend(pobjEvent); - } - - /*------------------------------------------------------------------------------ - * Helpers - *----------------------------------------------------------------------------*/ - - /** - * The helper function to validate the DatePattern. - * - * @param pstrPattern The DatePattern to be validated. - * @return The validated date pattern or defautlt DATE_PATTERN - */ - private String checkPattern(String pstrPattern) { - String strRet = null; - SimpleDateFormat objFmt = new SimpleDateFormat(DATE_PATTERN); - - try { - this.mobjSDF = new SimpleDateFormat(pstrPattern); - strRet = pstrPattern; - } catch (NullPointerException NPExIgnore) { - LogLog.error("Invalid DatePattern " + pstrPattern, NPExIgnore); - this.mobjSDF = objFmt; - strRet = DATE_PATTERN; - } catch (IllegalArgumentException IlArgExIgnore) { - LogLog.error("Invalid DatePattern " + pstrPattern, IlArgExIgnore); - this.mobjSDF = objFmt; - strRet = DATE_PATTERN; - } finally { - objFmt = null; - } - return strRet; - } - - /** - * This function is responsible for performing the actual file rollover. - * - * @param pstrName The name of the new folder based on current system date. - * @throws IOException if IO error - */ - private static boolean deletingFiles = false; - - private void cleanupOldFiles() { - // If we need to delete log files - if (mMaxLogs > 0 && !deletingFiles) { - deletingFiles = true; - - // Determine the final file extension with the hostname - String hostFileExt = null; - try { - hostFileExt = "." + java.net.InetAddress.getLocalHost().getHostName(); - } catch (UnknownHostException e) { - LogLog.error("Unable to retrieve host name"); - } - - try { - // Array to hold the logs we are going to keep - File[] logsToKeep = new File[mMaxLogs]; - - // Get a 'master' file handle, and the parent directory from it - File logMaster = new File(mstrFileName); - File logDir = logMaster.getParentFile(); - if (logDir.isDirectory()) { - // Iterate all the files in that directory - File[] logArr = logDir.listFiles(); - for (File curLog : logArr) { - LogLog.debug("Comparing '" + curLog.getAbsolutePath() + "' to '" + mstrFileName + "'"); - String name = curLog.getAbsolutePath(); - - // First, see if we are not using hostname, or the log file ends with this host - if (!mWithHostName || (hostFileExt != null && name.endsWith(hostFileExt))) { - // Check that the file is indeed one we want (contains the master file name) - if (name.contains(mstrFileName)) { - // Iterate through the array of logs we are keeping - for (int i = 0; curLog != null && i < logsToKeep.length; i++) { - // Have we exhausted the 'to keep' array? - if (logsToKeep[i] == null) { - // Empty space, retain this log file - logsToKeep[i] = curLog; - curLog = null; - } else if (logsToKeep[i].getName().compareTo(curLog.getName()) < 0) { - // If the 'kept' file is older than the current one - // Replace tested entry with current file - File temp = logsToKeep[i]; - logsToKeep[i] = curLog; - curLog = temp; - } - } - - // If we have a 'current' entry at this point, it's a log we don't want - if (curLog != null) { - LogLog.debug("Deleting log " + curLog.getName()); - if (!curLog.delete()) { - LogLog.error("Unable to delete log file"); - } - } - } - } - } - } - } catch (Exception e) { - // Don't worry about exceptions - } finally { - deletingFiles = false; - } - } - } - - private void rollOver(Date dtNow) throws IOException { - mstrDate = dtNow; - setFileName(); - this.setFile(fileName, true, bufferedIO, bufferSize); - - cleanupOldFiles(); - } - - private void setFileName() { - fileName = mstrFileName + "." + mobjSDF.format(mstrDate); - - if (mWithHostName) { - try { - fileName += "." + java.net.InetAddress.getLocalHost().getHostName(); - } catch (UnknownHostException e) { - LogLog.error("Unable to retrieve host name"); - } - } - } -} diff --git a/dspace-api/src/main/java/org/dspace/app/util/GoogleBitstreamComparator.java b/dspace-api/src/main/java/org/dspace/app/util/GoogleBitstreamComparator.java index 821fd2f3b5..add98af96f 100644 --- a/dspace-api/src/main/java/org/dspace/app/util/GoogleBitstreamComparator.java +++ b/dspace-api/src/main/java/org/dspace/app/util/GoogleBitstreamComparator.java @@ -12,7 +12,7 @@ import java.util.Comparator; import java.util.HashMap; import java.util.Map; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.Bitstream; import org.dspace.content.BitstreamFormat; import org.dspace.content.factory.ContentServiceFactory; @@ -24,7 +24,7 @@ import org.dspace.core.Context; */ public class GoogleBitstreamComparator implements Comparator { - private final static Logger log = Logger.getLogger(GoogleBitstreamComparator.class); + private final static Logger log = org.apache.logging.log4j.LogManager.getLogger(GoogleBitstreamComparator.class); HashMap priorityMap = new HashMap<>(); diff --git a/dspace-api/src/main/java/org/dspace/app/util/GoogleMetadata.java b/dspace-api/src/main/java/org/dspace/app/util/GoogleMetadata.java index f012395de4..c2bd6633f0 100644 --- a/dspace-api/src/main/java/org/dspace/app/util/GoogleMetadata.java +++ b/dspace-api/src/main/java/org/dspace/app/util/GoogleMetadata.java @@ -26,7 +26,7 @@ import java.util.Properties; import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.ListMultimap; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.factory.AuthorizeServiceFactory; import org.dspace.content.Bitstream; import org.dspace.content.Bundle; @@ -51,7 +51,7 @@ import org.jdom.Element; @SuppressWarnings("deprecation") public class GoogleMetadata { - private final static Logger log = Logger.getLogger(GoogleMetadata.class); + private final static Logger log = org.apache.logging.log4j.LogManager.getLogger(GoogleMetadata.class); protected static final String GOOGLE_PREFIX = "google."; diff --git a/dspace-api/src/main/java/org/dspace/app/util/InitializeEntities.java b/dspace-api/src/main/java/org/dspace/app/util/InitializeEntities.java index 909fcd930e..6d90826e32 100644 --- a/dspace-api/src/main/java/org/dspace/app/util/InitializeEntities.java +++ b/dspace-api/src/main/java/org/dspace/app/util/InitializeEntities.java @@ -22,8 +22,9 @@ import org.apache.commons.cli.HelpFormatter; import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; import org.apache.commons.cli.PosixParser; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.EntityType; import org.dspace.content.RelationshipType; @@ -45,7 +46,7 @@ import org.xml.sax.SAXException; */ public class InitializeEntities { - private final static Logger log = Logger.getLogger(InitializeEntities.class); + private final static Logger log = LogManager.getLogger(); private RelationshipTypeService relationshipTypeService; private RelationshipService relationshipService; diff --git a/dspace-api/src/main/java/org/dspace/app/util/MetadataExposureServiceImpl.java b/dspace-api/src/main/java/org/dspace/app/util/MetadataExposureServiceImpl.java index 3c3eb8ab4f..681867371a 100644 --- a/dspace-api/src/main/java/org/dspace/app/util/MetadataExposureServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/app/util/MetadataExposureServiceImpl.java @@ -14,7 +14,7 @@ import java.util.List; import java.util.Map; import java.util.Set; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.app.util.service.MetadataExposureService; import org.dspace.authorize.service.AuthorizeService; import org.dspace.core.Context; @@ -58,7 +58,7 @@ import org.springframework.beans.factory.annotation.Autowired; * @version $Revision: 3734 $ */ public class MetadataExposureServiceImpl implements MetadataExposureService { - protected Logger log = Logger.getLogger(MetadataExposureServiceImpl.class); + protected Logger log = org.apache.logging.log4j.LogManager.getLogger(MetadataExposureServiceImpl.class); protected Map> hiddenElementSets = null; protected Map>> hiddenElementMaps = null; 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 d0824923c7..c8d5a8dd9a 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 @@ -20,7 +20,7 @@ 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 org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.app.util.service.OpenSearchService; import org.dspace.content.DSpaceObject; import org.dspace.core.Constants; @@ -54,7 +54,7 @@ import org.w3c.dom.Document; * @author Richard Rodgers */ public class OpenSearchServiceImpl implements OpenSearchService, InitializingBean { - private static final Logger log = Logger.getLogger(OpenSearchServiceImpl.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(OpenSearchServiceImpl.class); // are open search queries enabled? protected boolean enabled = false; diff --git a/dspace-api/src/main/java/org/dspace/app/util/OptimizeSelectCollection.java b/dspace-api/src/main/java/org/dspace/app/util/OptimizeSelectCollection.java index c717ac3014..1e018ff889 100644 --- a/dspace-api/src/main/java/org/dspace/app/util/OptimizeSelectCollection.java +++ b/dspace-api/src/main/java/org/dspace/app/util/OptimizeSelectCollection.java @@ -11,7 +11,7 @@ import java.sql.SQLException; import java.util.ArrayList; import java.util.List; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.Collection; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.CollectionService; @@ -28,7 +28,7 @@ import org.springframework.util.StopWatch; * Invocation: dsrun org.dspace.app.util.OptimizeSelectCollection */ public class OptimizeSelectCollection { - private static final Logger log = Logger.getLogger(OptimizeSelectCollection.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(OptimizeSelectCollection.class); private static Context context; private static ArrayList brokenPeople; diff --git a/dspace-api/src/main/java/org/dspace/app/util/SubmissionConfig.java b/dspace-api/src/main/java/org/dspace/app/util/SubmissionConfig.java index c231955ad4..94d61048bb 100644 --- a/dspace-api/src/main/java/org/dspace/app/util/SubmissionConfig.java +++ b/dspace-api/src/main/java/org/dspace/app/util/SubmissionConfig.java @@ -12,7 +12,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; /** * Class representing a single Item Submission config definition, organized into @@ -44,7 +44,7 @@ public class SubmissionConfig implements Serializable { /** * log4j logger */ - private static Logger log = Logger.getLogger(SubmissionConfig.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(SubmissionConfig.class); /** * Constructs a new Submission Configuration object, based on the XML diff --git a/dspace-api/src/main/java/org/dspace/app/util/SubmissionConfigReader.java b/dspace-api/src/main/java/org/dspace/app/util/SubmissionConfigReader.java index 407d9c2bef..c65b7d1c90 100644 --- a/dspace-api/src/main/java/org/dspace/app/util/SubmissionConfigReader.java +++ b/dspace-api/src/main/java/org/dspace/app/util/SubmissionConfigReader.java @@ -19,7 +19,7 @@ import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.FactoryConfigurationError; import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.Collection; import org.dspace.content.DSpaceObject; import org.dspace.core.Context; @@ -71,7 +71,7 @@ public class SubmissionConfigReader { /** * log4j logger */ - private static Logger log = Logger.getLogger(SubmissionConfigReader.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(SubmissionConfigReader.class); /** * The fully qualified pathname of the directory containing the Item Submission Configuration file diff --git a/dspace-api/src/main/java/org/dspace/app/util/SyndicationFeed.java b/dspace-api/src/main/java/org/dspace/app/util/SyndicationFeed.java index 5e79b69202..3e0caee543 100644 --- a/dspace-api/src/main/java/org/dspace/app/util/SyndicationFeed.java +++ b/dspace-api/src/main/java/org/dspace/app/util/SyndicationFeed.java @@ -34,9 +34,9 @@ import com.sun.syndication.feed.synd.SyndPerson; import com.sun.syndication.feed.synd.SyndPersonImpl; import com.sun.syndication.io.FeedException; import com.sun.syndication.io.SyndFeedOutput; -import org.apache.commons.lang.ArrayUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.content.Bitstream; import org.dspace.content.Bundle; import org.dspace.content.Collection; @@ -69,7 +69,7 @@ import org.w3c.dom.Document; * @author Larry Stone */ public class SyndicationFeed { - protected final Logger log = Logger.getLogger(SyndicationFeed.class); + protected final Logger log = org.apache.logging.log4j.LogManager.getLogger(SyndicationFeed.class); /** diff --git a/dspace-api/src/main/java/org/dspace/app/util/Util.java b/dspace-api/src/main/java/org/dspace/app/util/Util.java index b3b6049b00..7d4a5e8182 100644 --- a/dspace-api/src/main/java/org/dspace/app/util/Util.java +++ b/dspace-api/src/main/java/org/dspace/app/util/Util.java @@ -23,8 +23,8 @@ import java.util.UUID; import javax.servlet.http.HttpServletRequest; import org.apache.commons.collections4.ListUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.content.Collection; import org.dspace.content.Item; import org.dspace.content.MetadataValue; @@ -44,7 +44,7 @@ public class Util { // cache for source version result private static String sourceVersion = null; - private static Logger log = Logger.getLogger(Util.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(Util.class); /** * Default constructor. Must be protected as org.dspace.xmlworkflow.WorkflowUtils extends it diff --git a/dspace-api/src/main/java/org/dspace/app/util/WebAppServiceImpl.java b/dspace-api/src/main/java/org/dspace/app/util/WebAppServiceImpl.java index 84cc21e642..5709867f24 100644 --- a/dspace-api/src/main/java/org/dspace/app/util/WebAppServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/app/util/WebAppServiceImpl.java @@ -18,7 +18,7 @@ import org.apache.http.HttpStatus; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpHead; import org.apache.http.impl.client.DefaultHttpClient; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.app.util.dao.WebAppDAO; import org.dspace.app.util.service.WebAppService; import org.dspace.core.Context; @@ -33,7 +33,7 @@ import org.springframework.beans.factory.annotation.Autowired; */ public class WebAppServiceImpl implements WebAppService { - private final Logger log = Logger.getLogger(WebAppServiceImpl.class); + private final Logger log = org.apache.logging.log4j.LogManager.getLogger(WebAppServiceImpl.class); @Autowired(required = true) protected WebAppDAO webAppDAO; diff --git a/dspace-api/src/main/java/org/dspace/app/util/XMLUtils.java b/dspace-api/src/main/java/org/dspace/app/util/XMLUtils.java index 7f1b72a565..884b2a6a92 100644 --- a/dspace-api/src/main/java/org/dspace/app/util/XMLUtils.java +++ b/dspace-api/src/main/java/org/dspace/app/util/XMLUtils.java @@ -11,7 +11,7 @@ import java.util.ArrayList; import java.util.LinkedList; import java.util.List; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.w3c.dom.Element; import org.w3c.dom.NodeList; 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 9a8dcf7d55..e18c4eddd7 100644 --- a/dspace-api/src/main/java/org/dspace/authenticate/IPAuthentication.java +++ b/dspace-api/src/main/java/org/dspace/authenticate/IPAuthentication.java @@ -17,14 +17,15 @@ import java.util.UUID; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.apache.log4j.Logger; -import org.dspace.core.ConfigurationManager; +import org.apache.logging.log4j.Logger; import org.dspace.core.Context; import org.dspace.core.LogManager; +import org.dspace.core.factory.CoreServiceFactory; 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.service.ClientInfoService; import org.dspace.services.factory.DSpaceServicesFactory; /** @@ -49,7 +50,7 @@ public class IPAuthentication implements AuthenticationMethod { /** * Our logger */ - private static Logger log = Logger.getLogger(IPAuthentication.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(IPAuthentication.class); /** * Whether to look for x-forwarded headers for logging IP addresses @@ -67,6 +68,7 @@ public class IPAuthentication implements AuthenticationMethod { protected List ipNegativeMatchers; protected GroupService groupService; + protected ClientInfoService clientInfoService; /** @@ -91,6 +93,7 @@ public class IPAuthentication implements AuthenticationMethod { ipMatcherGroupIDs = new HashMap<>(); ipMatcherGroupNames = new HashMap<>(); groupService = EPersonServiceFactory.getInstance().getGroupService(); + clientInfoService = CoreServiceFactory.getInstance().getClientInfoService(); List propNames = DSpaceServicesFactory.getInstance().getConfigurationService() .getPropertyKeys("authentication-ip"); @@ -169,18 +172,7 @@ public class IPAuthentication implements AuthenticationMethod { List groups = new ArrayList(); // Get the user's IP address - String addr = request.getRemoteAddr(); - if (useProxies == null) { - useProxies = ConfigurationManager.getBooleanProperty("useProxies", false); - } - if (useProxies && request.getHeader("X-Forwarded-For") != null) { - /* This header is a comma delimited list */ - for (String xfip : request.getHeader("X-Forwarded-For").split(",")) { - if (!request.getHeader("X-Forwarded-For").contains(addr)) { - addr = xfip.trim(); - } - } - } + String addr = clientInfoService.getClientIp(request); for (IPMatcher ipm : ipMatchers) { try { diff --git a/dspace-api/src/main/java/org/dspace/authenticate/IPMatcher.java b/dspace-api/src/main/java/org/dspace/authenticate/IPMatcher.java index 02825589cb..955b6c86d3 100644 --- a/dspace-api/src/main/java/org/dspace/authenticate/IPMatcher.java +++ b/dspace-api/src/main/java/org/dspace/authenticate/IPMatcher.java @@ -10,7 +10,7 @@ package org.dspace.authenticate; import java.net.Inet6Address; import java.net.UnknownHostException; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; /** *

@@ -38,7 +38,7 @@ import org.apache.log4j.Logger; * @version $Revision$ */ public class IPMatcher { - private static Logger log = Logger.getLogger(IPMatcher.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(IPMatcher.class); /** * Network to match diff --git a/dspace-api/src/main/java/org/dspace/authenticate/LDAPAuthentication.java b/dspace-api/src/main/java/org/dspace/authenticate/LDAPAuthentication.java index 13ba180c0f..ae793ec433 100644 --- a/dspace-api/src/main/java/org/dspace/authenticate/LDAPAuthentication.java +++ b/dspace-api/src/main/java/org/dspace/authenticate/LDAPAuthentication.java @@ -28,8 +28,8 @@ import javax.naming.ldap.StartTlsResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.authenticate.factory.AuthenticateServiceFactory; import org.dspace.authenticate.service.AuthenticationService; import org.dspace.authorize.AuthorizeException; @@ -61,7 +61,7 @@ public class LDAPAuthentication /** * log4j category */ - private static Logger log = Logger.getLogger(LDAPAuthentication.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(LDAPAuthentication.class); protected AuthenticationService authenticationService = AuthenticateServiceFactory.getInstance() .getAuthenticationService(); 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 a111be30ce..86cfb50c5f 100644 --- a/dspace-api/src/main/java/org/dspace/authenticate/PasswordAuthentication.java +++ b/dspace-api/src/main/java/org/dspace/authenticate/PasswordAuthentication.java @@ -15,7 +15,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.core.Context; import org.dspace.core.LogManager; import org.dspace.eperson.EPerson; @@ -49,7 +49,7 @@ public class PasswordAuthentication /** * log4j category */ - private static Logger log = Logger.getLogger(PasswordAuthentication.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(PasswordAuthentication.class); /** diff --git a/dspace-api/src/main/java/org/dspace/authenticate/ShibAuthentication.java b/dspace-api/src/main/java/org/dspace/authenticate/ShibAuthentication.java index cdea32a183..2ff0e457a8 100644 --- a/dspace-api/src/main/java/org/dspace/authenticate/ShibAuthentication.java +++ b/dspace-api/src/main/java/org/dspace/authenticate/ShibAuthentication.java @@ -23,8 +23,8 @@ import java.util.UUID; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.authenticate.factory.AuthenticateServiceFactory; import org.dspace.authorize.AuthorizeException; import org.dspace.content.MetadataField; @@ -70,7 +70,7 @@ public class ShibAuthentication implements AuthenticationMethod { /** * log4j category */ - private static Logger log = Logger.getLogger(ShibAuthentication.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(ShibAuthentication.class); /** * Additional metadata mappings diff --git a/dspace-api/src/main/java/org/dspace/authenticate/X509Authentication.java b/dspace-api/src/main/java/org/dspace/authenticate/X509Authentication.java index da2097d0dd..df9e767116 100644 --- a/dspace-api/src/main/java/org/dspace/authenticate/X509Authentication.java +++ b/dspace-api/src/main/java/org/dspace/authenticate/X509Authentication.java @@ -29,8 +29,8 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; -import org.apache.commons.lang.ArrayUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.ArrayUtils; +import org.apache.logging.log4j.Logger; import org.dspace.authenticate.factory.AuthenticateServiceFactory; import org.dspace.authenticate.service.AuthenticationService; import org.dspace.authorize.AuthorizeException; @@ -105,7 +105,7 @@ public class X509Authentication implements AuthenticationMethod { /** * log4j category */ - private static Logger log = Logger.getLogger(X509Authentication.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(X509Authentication.class); /** * public key of CA to check client certs against. diff --git a/dspace-api/src/main/java/org/dspace/authority/AuthoritySolrServiceImpl.java b/dspace-api/src/main/java/org/dspace/authority/AuthoritySolrServiceImpl.java index 56521ac950..2aeaa6e364 100644 --- a/dspace-api/src/main/java/org/dspace/authority/AuthoritySolrServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/authority/AuthoritySolrServiceImpl.java @@ -12,7 +12,7 @@ import java.net.MalformedURLException; import java.util.ArrayList; import java.util.List; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.impl.HttpSolrServer; @@ -30,7 +30,7 @@ import org.dspace.core.ConfigurationManager; */ public class AuthoritySolrServiceImpl implements AuthorityIndexingService, AuthoritySearchService { - private static final Logger log = Logger.getLogger(AuthoritySolrServiceImpl.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(AuthoritySolrServiceImpl.class); protected AuthoritySolrServiceImpl() { diff --git a/dspace-api/src/main/java/org/dspace/authority/AuthorityTypes.java b/dspace-api/src/main/java/org/dspace/authority/AuthorityTypes.java index 22f2f495cf..3ed16e9ce1 100644 --- a/dspace-api/src/main/java/org/dspace/authority/AuthorityTypes.java +++ b/dspace-api/src/main/java/org/dspace/authority/AuthorityTypes.java @@ -12,7 +12,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; /** * This class contains a list of active authority types. @@ -32,7 +32,7 @@ public class AuthorityTypes { /** * log4j logger */ - private static Logger log = Logger.getLogger(AuthorityTypes.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(AuthorityTypes.class); protected List types = new ArrayList(); diff --git a/dspace-api/src/main/java/org/dspace/authority/AuthorityValue.java b/dspace-api/src/main/java/org/dspace/authority/AuthorityValue.java index 80d9e16289..acb5bd754d 100644 --- a/dspace-api/src/main/java/org/dspace/authority/AuthorityValue.java +++ b/dspace-api/src/main/java/org/dspace/authority/AuthorityValue.java @@ -14,8 +14,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.apache.solr.common.SolrDocument; import org.apache.solr.common.SolrInputDocument; import org.dspace.authorize.AuthorizeException; @@ -234,7 +234,7 @@ public class AuthorityValue { /** * log4j logger */ - private static Logger log = Logger.getLogger(AuthorityValue.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(AuthorityValue.class); @Override public String toString() { diff --git a/dspace-api/src/main/java/org/dspace/authority/AuthorityValueServiceImpl.java b/dspace-api/src/main/java/org/dspace/authority/AuthorityValueServiceImpl.java index 7780c79232..194da3eba5 100644 --- a/dspace-api/src/main/java/org/dspace/authority/AuthorityValueServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/authority/AuthorityValueServiceImpl.java @@ -13,8 +13,8 @@ import java.util.List; import java.util.Map; import java.util.UUID; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.common.SolrDocument; @@ -34,7 +34,7 @@ import org.springframework.beans.factory.annotation.Autowired; */ public class AuthorityValueServiceImpl implements AuthorityValueService { - private final Logger log = Logger.getLogger(AuthorityValueServiceImpl.class); + private final Logger log = org.apache.logging.log4j.LogManager.getLogger(AuthorityValueServiceImpl.class); @Autowired(required = true) protected AuthorityTypes authorityTypes; diff --git a/dspace-api/src/main/java/org/dspace/authority/PersonAuthorityValue.java b/dspace-api/src/main/java/org/dspace/authority/PersonAuthorityValue.java index 179e06fc79..f937b5f7ed 100644 --- a/dspace-api/src/main/java/org/dspace/authority/PersonAuthorityValue.java +++ b/dspace-api/src/main/java/org/dspace/authority/PersonAuthorityValue.java @@ -12,8 +12,8 @@ import java.util.Collection; import java.util.List; import java.util.Map; -import org.apache.commons.lang.ObjectUtils; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.ObjectUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.solr.common.SolrDocument; import org.apache.solr.common.SolrInputDocument; diff --git a/dspace-api/src/main/java/org/dspace/authority/UpdateAuthorities.java b/dspace-api/src/main/java/org/dspace/authority/UpdateAuthorities.java index 44fd0a9241..db008c9db6 100644 --- a/dspace-api/src/main/java/org/dspace/authority/UpdateAuthorities.java +++ b/dspace-api/src/main/java/org/dspace/authority/UpdateAuthorities.java @@ -19,7 +19,7 @@ import org.apache.commons.cli.HelpFormatter; import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; import org.apache.commons.cli.PosixParser; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authority.factory.AuthorityServiceFactory; import org.dspace.authority.service.AuthorityValueService; import org.dspace.content.Item; @@ -40,7 +40,7 @@ public class UpdateAuthorities { /** * log4j logger */ - private static Logger log = Logger.getLogger(UpdateAuthorities.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(UpdateAuthorities.class); protected PrintWriter print = null; diff --git a/dspace-api/src/main/java/org/dspace/authority/indexer/AuthorityConsumer.java b/dspace-api/src/main/java/org/dspace/authority/indexer/AuthorityConsumer.java index c5029db53a..2105aa9488 100644 --- a/dspace-api/src/main/java/org/dspace/authority/indexer/AuthorityConsumer.java +++ b/dspace-api/src/main/java/org/dspace/authority/indexer/AuthorityConsumer.java @@ -12,7 +12,7 @@ import java.util.HashSet; import java.util.Set; import java.util.UUID; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authority.factory.AuthorityServiceFactory; import org.dspace.authority.service.AuthorityService; import org.dspace.content.DSpaceObject; @@ -33,7 +33,7 @@ import org.dspace.event.Event; */ public class AuthorityConsumer implements Consumer { - private final Logger log = Logger.getLogger(AuthorityConsumer.class); + private final Logger log = org.apache.logging.log4j.LogManager.getLogger(AuthorityConsumer.class); /** * A set of all item IDs installed which need their authority updated diff --git a/dspace-api/src/main/java/org/dspace/authority/indexer/AuthorityIndexClient.java b/dspace-api/src/main/java/org/dspace/authority/indexer/AuthorityIndexClient.java index 2b933a3bff..f2a4dcf6c4 100644 --- a/dspace-api/src/main/java/org/dspace/authority/indexer/AuthorityIndexClient.java +++ b/dspace-api/src/main/java/org/dspace/authority/indexer/AuthorityIndexClient.java @@ -12,7 +12,7 @@ import java.util.Iterator; import java.util.List; import java.util.Map; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authority.AuthorityValue; import org.dspace.authority.factory.AuthorityServiceFactory; import org.dspace.authority.service.AuthorityService; @@ -29,7 +29,7 @@ import org.dspace.core.Context; */ public class AuthorityIndexClient { - private static Logger log = Logger.getLogger(AuthorityIndexClient.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(AuthorityIndexClient.class); protected static final AuthorityService authorityService = AuthorityServiceFactory.getInstance().getAuthorityService(); diff --git a/dspace-api/src/main/java/org/dspace/authority/indexer/DSpaceAuthorityIndexer.java b/dspace-api/src/main/java/org/dspace/authority/indexer/DSpaceAuthorityIndexer.java index 3b8cc1daf8..20baef8f9c 100644 --- a/dspace-api/src/main/java/org/dspace/authority/indexer/DSpaceAuthorityIndexer.java +++ b/dspace-api/src/main/java/org/dspace/authority/indexer/DSpaceAuthorityIndexer.java @@ -13,8 +13,8 @@ import java.util.List; import java.util.Map; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.authority.AuthorityValue; import org.dspace.authority.service.AuthorityValueService; import org.dspace.authorize.AuthorizeException; @@ -45,7 +45,7 @@ import org.springframework.beans.factory.annotation.Autowired; */ public class DSpaceAuthorityIndexer implements AuthorityIndexerInterface, InitializingBean { - private static final Logger log = Logger.getLogger(DSpaceAuthorityIndexer.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(DSpaceAuthorityIndexer.class); /** * The list of metadata fields which are to be indexed * @@ -124,7 +124,7 @@ public class DSpaceAuthorityIndexer implements AuthorityIndexerInterface, Initia * This method looks at the authority of a metadata value. * If the authority can be found in solr, that value is reused. * Otherwise a new authority value will be generated that will be indexed in solr. - * + * * If the authority starts with AuthorityValueGenerator.GENERATE, a specific type of AuthorityValue will be * generated. * Depending on the type this may involve querying an external REST service diff --git a/dspace-api/src/main/java/org/dspace/authority/orcid/Orcidv2.java b/dspace-api/src/main/java/org/dspace/authority/orcid/Orcidv2.java index cf97bbe442..a545c6cf9e 100644 --- a/dspace-api/src/main/java/org/dspace/authority/orcid/Orcidv2.java +++ b/dspace-api/src/main/java/org/dspace/authority/orcid/Orcidv2.java @@ -15,12 +15,13 @@ import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.HttpClientBuilder; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.dspace.authority.AuthorityValue; import org.dspace.authority.SolrAuthorityInterface; import org.dspace.authority.orcid.xml.XMLtoBio; @@ -35,7 +36,7 @@ import org.orcid.jaxb.model.record_v2.Person; */ public class Orcidv2 implements SolrAuthorityInterface { - private static Logger log = Logger.getLogger(Orcidv2.class); + private static Logger log = LogManager.getLogger(Orcidv2.class); public RESTConnector restConnector; private String OAUTHUrl; @@ -46,7 +47,9 @@ public class Orcidv2 implements SolrAuthorityInterface { private String accessToken; /** - * Initialize the accessToken that is required for all subsequent calls to ORCID + * Initialize the accessToken that is required for all subsequent calls to ORCID. + * + * @throws java.io.IOException passed through from HTTPclient. */ public void init() throws IOException { if (StringUtils.isNotBlank(accessToken) && StringUtils.isNotBlank(clientSecret)) { diff --git a/dspace-api/src/main/java/org/dspace/authority/orcid/Orcidv2AuthorityValue.java b/dspace-api/src/main/java/org/dspace/authority/orcid/Orcidv2AuthorityValue.java index 0aa0d292e7..456ccacd4d 100644 --- a/dspace-api/src/main/java/org/dspace/authority/orcid/Orcidv2AuthorityValue.java +++ b/dspace-api/src/main/java/org/dspace/authority/orcid/Orcidv2AuthorityValue.java @@ -15,7 +15,7 @@ import java.util.List; import java.util.Map; import java.util.UUID; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.solr.common.SolrDocument; import org.apache.solr.common.SolrInputDocument; import org.dspace.authority.AuthorityValue; diff --git a/dspace-api/src/main/java/org/dspace/authority/orcid/xml/Converter.java b/dspace-api/src/main/java/org/dspace/authority/orcid/xml/Converter.java index 784a3fdf24..d55f9d4eee 100644 --- a/dspace-api/src/main/java/org/dspace/authority/orcid/xml/Converter.java +++ b/dspace-api/src/main/java/org/dspace/authority/orcid/xml/Converter.java @@ -14,10 +14,9 @@ import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Unmarshaller; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.xml.sax.SAXException; - /** * @param type * @author Antoine Snyers (antoine at atmire.com) @@ -30,7 +29,7 @@ public abstract class Converter { /** * log4j logger */ - private static Logger log = Logger.getLogger(Converter.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(Converter.class); public abstract T convert(InputStream document); diff --git a/dspace-api/src/main/java/org/dspace/authority/orcid/xml/XMLtoBio.java b/dspace-api/src/main/java/org/dspace/authority/orcid/xml/XMLtoBio.java index 9fb4a50d5f..d7fdb4dc81 100644 --- a/dspace-api/src/main/java/org/dspace/authority/orcid/xml/XMLtoBio.java +++ b/dspace-api/src/main/java/org/dspace/authority/orcid/xml/XMLtoBio.java @@ -12,7 +12,7 @@ import java.net.URISyntaxException; import java.util.ArrayList; import java.util.List; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authority.orcid.Orcidv2; import org.dspace.utils.DSpace; import org.orcid.jaxb.model.common_v2.OrcidId; @@ -21,8 +21,6 @@ import org.orcid.jaxb.model.search_v2.Result; import org.orcid.jaxb.model.search_v2.Search; import org.xml.sax.SAXException; - - /** * @author Antoine Snyers (antoine at atmire.com) * @author Kevin Van de Velde (kevin at atmire dot com) @@ -34,7 +32,7 @@ public class XMLtoBio extends Converter { /** * log4j logger */ - private static Logger log = Logger.getLogger(XMLtoBio.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(XMLtoBio.class); @Override public List convert(InputStream xml) { diff --git a/dspace-api/src/main/java/org/dspace/authority/rest/RESTConnector.java b/dspace-api/src/main/java/org/dspace/authority/rest/RESTConnector.java index cfa21a66cb..df88985d3a 100644 --- a/dspace-api/src/main/java/org/dspace/authority/rest/RESTConnector.java +++ b/dspace-api/src/main/java/org/dspace/authority/rest/RESTConnector.java @@ -15,7 +15,7 @@ import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.HttpClientBuilder; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; /** * @author Antoine Snyers (antoine at atmire.com) @@ -28,7 +28,7 @@ public class RESTConnector { /** * log4j logger */ - private static Logger log = Logger.getLogger(RESTConnector.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(RESTConnector.class); private String url; diff --git a/dspace-api/src/main/java/org/dspace/authority/util/EnumUtils.java b/dspace-api/src/main/java/org/dspace/authority/util/EnumUtils.java index 72dc41d6b9..43239ea459 100644 --- a/dspace-api/src/main/java/org/dspace/authority/util/EnumUtils.java +++ b/dspace-api/src/main/java/org/dspace/authority/util/EnumUtils.java @@ -7,8 +7,8 @@ */ package org.dspace.authority.util; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; /** * @author Antoine Snyers (antoine at atmire.com) @@ -21,7 +21,7 @@ public class EnumUtils { /** * log4j logger */ - private static Logger log = Logger.getLogger(EnumUtils.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(EnumUtils.class); /** * Default constructor diff --git a/dspace-api/src/main/java/org/dspace/authority/util/XMLUtils.java b/dspace-api/src/main/java/org/dspace/authority/util/XMLUtils.java index 5249f599e3..77568205af 100644 --- a/dspace-api/src/main/java/org/dspace/authority/util/XMLUtils.java +++ b/dspace-api/src/main/java/org/dspace/authority/util/XMLUtils.java @@ -17,7 +17,7 @@ import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.xpath.XPathExpressionException; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.apache.xpath.XPathAPI; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -36,7 +36,7 @@ public class XMLUtils { /** * log4j logger */ - private static Logger log = Logger.getLogger(XMLUtils.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(XMLUtils.class); /** * Default constructor diff --git a/dspace-api/src/main/java/org/dspace/authorize/AuthorizeServiceImpl.java b/dspace-api/src/main/java/org/dspace/authorize/AuthorizeServiceImpl.java index 8eca4ccf52..936a7d6492 100644 --- a/dspace-api/src/main/java/org/dspace/authorize/AuthorizeServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/authorize/AuthorizeServiceImpl.java @@ -16,7 +16,7 @@ import java.util.List; import java.util.UUID; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.dspace.authorize.service.AuthorizeService; import org.dspace.authorize.service.ResourcePolicyService; import org.dspace.content.Bitstream; diff --git a/dspace-api/src/main/java/org/dspace/authorize/ResourcePolicy.java b/dspace-api/src/main/java/org/dspace/authorize/ResourcePolicy.java index 68d7ecd4f5..f4208e5835 100644 --- a/dspace-api/src/main/java/org/dspace/authorize/ResourcePolicy.java +++ b/dspace-api/src/main/java/org/dspace/authorize/ResourcePolicy.java @@ -23,7 +23,7 @@ import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; -import org.apache.commons.lang.ObjectUtils; +import org.apache.commons.lang3.ObjectUtils; import org.dspace.content.DSpaceObject; import org.dspace.core.Context; import org.dspace.core.ReloadableEntity; diff --git a/dspace-api/src/main/java/org/dspace/authorize/ResourcePolicyServiceImpl.java b/dspace-api/src/main/java/org/dspace/authorize/ResourcePolicyServiceImpl.java index 2609c6d165..4693599c31 100644 --- a/dspace-api/src/main/java/org/dspace/authorize/ResourcePolicyServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/authorize/ResourcePolicyServiceImpl.java @@ -15,8 +15,8 @@ import java.util.List; import java.util.Set; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang.ObjectUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.ObjectUtils; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.dao.ResourcePolicyDAO; import org.dspace.authorize.service.ResourcePolicyService; import org.dspace.content.DSpaceObject; @@ -38,7 +38,7 @@ public class ResourcePolicyServiceImpl implements ResourcePolicyService { /** * log4j logger */ - private static Logger log = Logger.getLogger(ResourcePolicyServiceImpl.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(ResourcePolicyServiceImpl.class); @Autowired(required = true) protected ContentServiceFactory contentServiceFactory; diff --git a/dspace-api/src/main/java/org/dspace/browse/BrowseEngine.java b/dspace-api/src/main/java/org/dspace/browse/BrowseEngine.java index f7fb0b21ee..302d46eb0d 100644 --- a/dspace-api/src/main/java/org/dspace/browse/BrowseEngine.java +++ b/dspace-api/src/main/java/org/dspace/browse/BrowseEngine.java @@ -12,7 +12,7 @@ import java.util.ArrayList; import java.util.List; import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.Collection; import org.dspace.content.Community; import org.dspace.content.Item; @@ -34,7 +34,7 @@ public class BrowseEngine { /** * the logger for this class */ - private static final Logger log = Logger.getLogger(BrowseEngine.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(BrowseEngine.class); /** * the browse scope which is the basis for our browse diff --git a/dspace-api/src/main/java/org/dspace/browse/ItemCountDAOSolr.java b/dspace-api/src/main/java/org/dspace/browse/ItemCountDAOSolr.java index e39a584684..4b741847a8 100644 --- a/dspace-api/src/main/java/org/dspace/browse/ItemCountDAOSolr.java +++ b/dspace-api/src/main/java/org/dspace/browse/ItemCountDAOSolr.java @@ -11,7 +11,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.Collection; import org.dspace.content.Community; import org.dspace.content.DSpaceObject; @@ -36,7 +36,7 @@ public class ItemCountDAOSolr implements ItemCountDAO { /** * Log4j logger */ - private static Logger log = Logger.getLogger(ItemCountDAOSolr.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(ItemCountDAOSolr.class); /** * DSpace context diff --git a/dspace-api/src/main/java/org/dspace/browse/ItemCounter.java b/dspace-api/src/main/java/org/dspace/browse/ItemCounter.java index 9b91f7afb9..c9c140fb0b 100644 --- a/dspace-api/src/main/java/org/dspace/browse/ItemCounter.java +++ b/dspace-api/src/main/java/org/dspace/browse/ItemCounter.java @@ -9,7 +9,7 @@ package org.dspace.browse; import java.sql.SQLException; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.Collection; import org.dspace.content.Community; import org.dspace.content.DSpaceObject; @@ -37,7 +37,7 @@ public class ItemCounter { /** * Log4j logger */ - private static Logger log = Logger.getLogger(ItemCounter.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(ItemCounter.class); /** * DAO to use to store and retrieve data diff --git a/dspace-api/src/main/java/org/dspace/browse/ItemListConfig.java b/dspace-api/src/main/java/org/dspace/browse/ItemListConfig.java index 58e3d83a0c..9cbbe8f194 100644 --- a/dspace-api/src/main/java/org/dspace/browse/ItemListConfig.java +++ b/dspace-api/src/main/java/org/dspace/browse/ItemListConfig.java @@ -12,7 +12,7 @@ import java.util.HashMap; import java.util.Map; import java.util.StringTokenizer; -import org.apache.commons.lang.ArrayUtils; +import org.apache.commons.lang3.ArrayUtils; import org.dspace.services.ConfigurationService; import org.dspace.services.factory.DSpaceServicesFactory; diff --git a/dspace-api/src/main/java/org/dspace/browse/LocaleOrderingFilter.java b/dspace-api/src/main/java/org/dspace/browse/LocaleOrderingFilter.java index 40f889233a..c2a2bd9804 100644 --- a/dspace-api/src/main/java/org/dspace/browse/LocaleOrderingFilter.java +++ b/dspace-api/src/main/java/org/dspace/browse/LocaleOrderingFilter.java @@ -12,7 +12,7 @@ import java.util.Locale; import com.ibm.icu.text.CollationElementIterator; import com.ibm.icu.text.Collator; import com.ibm.icu.text.RuleBasedCollator; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.core.ConfigurationManager; import org.dspace.text.filter.TextFilter; @@ -32,7 +32,7 @@ import org.dspace.text.filter.TextFilter; * @author Graham Triggs */ public class LocaleOrderingFilter implements TextFilter { - private static Logger log = Logger.getLogger(LocaleOrderingFilter.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(LocaleOrderingFilter.class); /** * Uses a Locale dependent Collator to generate a sort string diff --git a/dspace-api/src/main/java/org/dspace/browse/SolrBrowseDAO.java b/dspace-api/src/main/java/org/dspace/browse/SolrBrowseDAO.java index 3e5415f7d4..98d5b8bbcb 100644 --- a/dspace-api/src/main/java/org/dspace/browse/SolrBrowseDAO.java +++ b/dspace-api/src/main/java/org/dspace/browse/SolrBrowseDAO.java @@ -16,7 +16,7 @@ import java.util.List; import java.util.UUID; import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.factory.AuthorizeServiceFactory; import org.dspace.authorize.service.AuthorizeService; import org.dspace.content.DSpaceObject; @@ -68,7 +68,7 @@ public class SolrBrowseDAO implements BrowseDAO { /** * Log4j log */ - private static final Logger log = Logger.getLogger(SolrBrowseDAO.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(SolrBrowseDAO.class); /** * The DSpace context diff --git a/dspace-api/src/main/java/org/dspace/checker/CheckerCommand.java b/dspace-api/src/main/java/org/dspace/checker/CheckerCommand.java index 2ae27e5ec6..6b16d51bfe 100644 --- a/dspace-api/src/main/java/org/dspace/checker/CheckerCommand.java +++ b/dspace-api/src/main/java/org/dspace/checker/CheckerCommand.java @@ -13,7 +13,7 @@ import java.util.Date; import java.util.Map; import org.apache.commons.collections4.MapUtils; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.checker.factory.CheckerServiceFactory; import org.dspace.checker.service.ChecksumHistoryService; import org.dspace.checker.service.ChecksumResultService; @@ -42,7 +42,7 @@ public final class CheckerCommand { /** * Usual Log4J logger. */ - private static final Logger LOG = Logger.getLogger(CheckerCommand.class); + private static final Logger LOG = org.apache.logging.log4j.LogManager.getLogger(CheckerCommand.class); private Context context; diff --git a/dspace-api/src/main/java/org/dspace/checker/CheckerConsumer.java b/dspace-api/src/main/java/org/dspace/checker/CheckerConsumer.java index f4266a7a79..4601e3867f 100644 --- a/dspace-api/src/main/java/org/dspace/checker/CheckerConsumer.java +++ b/dspace-api/src/main/java/org/dspace/checker/CheckerConsumer.java @@ -7,7 +7,7 @@ */ package org.dspace.checker; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.checker.factory.CheckerServiceFactory; import org.dspace.checker.service.ChecksumHistoryService; import org.dspace.content.Bitstream; @@ -26,7 +26,7 @@ public class CheckerConsumer implements Consumer { /** * log4j logger */ - private static Logger log = Logger.getLogger(CheckerConsumer.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(CheckerConsumer.class); protected ChecksumHistoryService checksumHistoryService = CheckerServiceFactory.getInstance() .getChecksumHistoryService(); diff --git a/dspace-api/src/main/java/org/dspace/checker/DailyReportEmailer.java b/dspace-api/src/main/java/org/dspace/checker/DailyReportEmailer.java index 0b54ede0c5..56dabb0460 100644 --- a/dspace-api/src/main/java/org/dspace/checker/DailyReportEmailer.java +++ b/dspace-api/src/main/java/org/dspace/checker/DailyReportEmailer.java @@ -21,7 +21,7 @@ import org.apache.commons.cli.HelpFormatter; import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; import org.apache.commons.cli.PosixParser; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.checker.factory.CheckerServiceFactory; import org.dspace.checker.service.SimpleReporterService; import org.dspace.core.ConfigurationManager; @@ -43,7 +43,7 @@ public class DailyReportEmailer { /** * log4j logger. */ - private static Logger log = Logger.getLogger(DailyReportEmailer.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(DailyReportEmailer.class); /** * Default constructor. diff --git a/dspace-api/src/main/java/org/dspace/checker/HandleDispatcher.java b/dspace-api/src/main/java/org/dspace/checker/HandleDispatcher.java index cec2d8f566..e68b37e180 100644 --- a/dspace-api/src/main/java/org/dspace/checker/HandleDispatcher.java +++ b/dspace-api/src/main/java/org/dspace/checker/HandleDispatcher.java @@ -12,7 +12,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.Bitstream; import org.dspace.content.DSpaceObject; import org.dspace.content.factory.ContentServiceFactory; @@ -35,7 +35,7 @@ public class HandleDispatcher implements BitstreamDispatcher { /** * Log 4j logger. */ - private static final Logger LOG = Logger.getLogger(HandleDispatcher.class); + private static final Logger LOG = org.apache.logging.log4j.LogManager.getLogger(HandleDispatcher.class); protected Context context; diff --git a/dspace-api/src/main/java/org/dspace/checker/MostRecentChecksum.java b/dspace-api/src/main/java/org/dspace/checker/MostRecentChecksum.java index f6af3d171b..5962d19f68 100644 --- a/dspace-api/src/main/java/org/dspace/checker/MostRecentChecksum.java +++ b/dspace-api/src/main/java/org/dspace/checker/MostRecentChecksum.java @@ -19,8 +19,8 @@ import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.persistence.Transient; -import org.apache.commons.lang.builder.EqualsBuilder; -import org.apache.commons.lang.builder.HashCodeBuilder; +import org.apache.commons.lang3.builder.EqualsBuilder; +import org.apache.commons.lang3.builder.HashCodeBuilder; import org.dspace.content.Bitstream; /** diff --git a/dspace-api/src/main/java/org/dspace/checker/MostRecentChecksumServiceImpl.java b/dspace-api/src/main/java/org/dspace/checker/MostRecentChecksumServiceImpl.java index 82a8ace677..d267171aa0 100644 --- a/dspace-api/src/main/java/org/dspace/checker/MostRecentChecksumServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/checker/MostRecentChecksumServiceImpl.java @@ -11,7 +11,7 @@ import java.sql.SQLException; import java.util.Date; import java.util.List; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.checker.dao.MostRecentChecksumDAO; import org.dspace.checker.service.ChecksumResultService; import org.dspace.checker.service.MostRecentChecksumService; @@ -28,7 +28,8 @@ import org.springframework.beans.factory.annotation.Autowired; * @author kevinvandevelde at atmire.com */ public class MostRecentChecksumServiceImpl implements MostRecentChecksumService { - private static final Logger log = Logger.getLogger(MostRecentChecksumServiceImpl.class); + private static final Logger log = + org.apache.logging.log4j.LogManager.getLogger(MostRecentChecksumServiceImpl.class); @Autowired(required = true) protected MostRecentChecksumDAO mostRecentChecksumDAO; diff --git a/dspace-api/src/main/java/org/dspace/checker/ResultsLogger.java b/dspace-api/src/main/java/org/dspace/checker/ResultsLogger.java index e0cf489d8c..358d0c4018 100644 --- a/dspace-api/src/main/java/org/dspace/checker/ResultsLogger.java +++ b/dspace-api/src/main/java/org/dspace/checker/ResultsLogger.java @@ -12,7 +12,7 @@ import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.Bitstream; import org.dspace.core.Context; import org.dspace.core.I18nUtil; @@ -30,7 +30,7 @@ public class ResultsLogger implements ChecksumResultsCollector { /** * Usual Log4J logger. */ - private static final Logger LOG = Logger.getLogger(ResultsLogger.class); + private static final Logger LOG = org.apache.logging.log4j.LogManager.getLogger(ResultsLogger.class); /** * Utility date format. diff --git a/dspace-api/src/main/java/org/dspace/checker/ResultsPruner.java b/dspace-api/src/main/java/org/dspace/checker/ResultsPruner.java index 2d595a19f8..d3c0b130da 100644 --- a/dspace-api/src/main/java/org/dspace/checker/ResultsPruner.java +++ b/dspace-api/src/main/java/org/dspace/checker/ResultsPruner.java @@ -19,7 +19,7 @@ import java.util.Properties; import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.checker.factory.CheckerServiceFactory; import org.dspace.checker.service.ChecksumHistoryService; import org.dspace.core.ConfigurationManager; @@ -40,7 +40,7 @@ public final class ResultsPruner { /** * Default logger. */ - private static final Logger LOG = Logger.getLogger(ResultsPruner.class); + private static final Logger LOG = org.apache.logging.log4j.LogManager.getLogger(ResultsPruner.class); /** * Factory method for the default results pruner configuration using diff --git a/dspace-api/src/main/java/org/dspace/content/Bitstream.java b/dspace-api/src/main/java/org/dspace/content/Bitstream.java index 3be9b1feb1..cc4ecd139e 100644 --- a/dspace-api/src/main/java/org/dspace/content/Bitstream.java +++ b/dspace-api/src/main/java/org/dspace/content/Bitstream.java @@ -122,7 +122,8 @@ public class Bitstream extends DSpaceObject implements DSpaceObjectLegacySupport */ @Override public String getName() { - return getBitstreamService().getMetadataFirstValue(this, MetadataSchema.DC_SCHEMA, "title", null, Item.ANY); + return getBitstreamService().getMetadataFirstValue(this, MetadataSchemaEnum.DC.getName(), + "title", null, Item.ANY); } /** @@ -133,7 +134,8 @@ public class Bitstream extends DSpaceObject implements DSpaceObjectLegacySupport * @throws SQLException if database error */ public void setName(Context context, String n) throws SQLException { - getBitstreamService().setMetadataSingleValue(context, this, MetadataSchema.DC_SCHEMA, "title", null, null, n); + getBitstreamService().setMetadataSingleValue(context, this, MetadataSchemaEnum.DC.getName(), + "title", null, null, n); } /** @@ -144,7 +146,8 @@ public class Bitstream extends DSpaceObject implements DSpaceObjectLegacySupport * @return the source of the bitstream */ public String getSource() { - return getBitstreamService().getMetadataFirstValue(this, MetadataSchema.DC_SCHEMA, "source", null, Item.ANY); + return getBitstreamService().getMetadataFirstValue(this, MetadataSchemaEnum.DC.getName(), + "source", null, Item.ANY); } /** @@ -155,7 +158,8 @@ public class Bitstream extends DSpaceObject implements DSpaceObjectLegacySupport * @throws SQLException if database error */ public void setSource(Context context, String n) throws SQLException { - getBitstreamService().setMetadataSingleValue(context, this, MetadataSchema.DC_SCHEMA, "source", null, null, n); + getBitstreamService().setMetadataSingleValue(context, this, MetadataSchemaEnum.DC.getName(), + "source", null, null, n); } /** @@ -166,7 +170,8 @@ public class Bitstream extends DSpaceObject implements DSpaceObjectLegacySupport */ public String getDescription() { return getBitstreamService() - .getMetadataFirstValue(this, MetadataSchema.DC_SCHEMA, "description", null, Item.ANY); + .getMetadataFirstValue(this, MetadataSchemaEnum.DC.getName(), "description", + null, Item.ANY); } /** @@ -178,7 +183,7 @@ public class Bitstream extends DSpaceObject implements DSpaceObjectLegacySupport */ public void setDescription(Context context, String n) throws SQLException { getBitstreamService() - .setMetadataSingleValue(context, this, MetadataSchema.DC_SCHEMA, "description", null, null, n); + .setMetadataSingleValue(context, this, MetadataSchemaEnum.DC.getName(), "description", null, null, n); } /** @@ -227,7 +232,8 @@ public class Bitstream extends DSpaceObject implements DSpaceObjectLegacySupport * @return the user's format description. */ public String getUserFormatDescription() { - return getBitstreamService().getMetadataFirstValue(this, MetadataSchema.DC_SCHEMA, "format", null, Item.ANY); + return getBitstreamService().getMetadataFirstValue(this, MetadataSchemaEnum.DC.getName(), + "format", null, Item.ANY); } protected BitstreamFormat getBitstreamFormat() { diff --git a/dspace-api/src/main/java/org/dspace/content/BitstreamFormatServiceImpl.java b/dspace-api/src/main/java/org/dspace/content/BitstreamFormatServiceImpl.java index 978b3070fc..7239424d91 100644 --- a/dspace-api/src/main/java/org/dspace/content/BitstreamFormatServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/content/BitstreamFormatServiceImpl.java @@ -12,7 +12,7 @@ import java.util.Collections; import java.util.List; import org.apache.commons.collections4.CollectionUtils; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.authorize.service.AuthorizeService; import org.dspace.content.dao.BitstreamFormatDAO; @@ -33,7 +33,7 @@ public class BitstreamFormatServiceImpl implements BitstreamFormatService { /** * log4j logger */ - private static Logger log = Logger.getLogger(BitstreamFormat.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(BitstreamFormat.class); @Autowired(required = true) protected BitstreamFormatDAO bitstreamFormatDAO; diff --git a/dspace-api/src/main/java/org/dspace/content/BitstreamServiceImpl.java b/dspace-api/src/main/java/org/dspace/content/BitstreamServiceImpl.java index e5e7cc57e4..78d65800b1 100644 --- a/dspace-api/src/main/java/org/dspace/content/BitstreamServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/content/BitstreamServiceImpl.java @@ -15,8 +15,8 @@ import java.util.List; import java.util.UUID; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.authorize.service.AuthorizeService; import org.dspace.content.dao.BitstreamDAO; @@ -43,7 +43,7 @@ public class BitstreamServiceImpl extends DSpaceObjectServiceImpl imp /** * log4j logger */ - private static Logger log = Logger.getLogger(BitstreamServiceImpl.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(BitstreamServiceImpl.class); @Autowired(required = true) @@ -103,6 +103,8 @@ public class BitstreamServiceImpl extends DSpaceObjectServiceImpl imp clonedBitstream.setSizeBytes(bitstream.getSizeBytes()); clonedBitstream.setChecksum(bitstream.getChecksum()); clonedBitstream.setChecksumAlgorithm(bitstream.getChecksumAlgorithm()); + clonedBitstream.setFormat(bitstream.getBitstreamFormat()); + try { //Update our bitstream but turn off the authorization system since permissions //haven't been set at this point in time. @@ -203,7 +205,7 @@ public class BitstreamServiceImpl extends DSpaceObjectServiceImpl imp @Override public void setUserFormatDescription(Context context, Bitstream bitstream, String desc) throws SQLException { setFormat(context, bitstream, null); - setMetadataSingleValue(context, bitstream, MetadataSchema.DC_SCHEMA, "format", null, null, desc); + setMetadataSingleValue(context, bitstream, MetadataSchemaEnum.DC.getName(), "format", null, null, desc); } @Override @@ -233,7 +235,7 @@ public class BitstreamServiceImpl extends DSpaceObjectServiceImpl imp } // Remove user type description - clearMetadata(context, bitstream, MetadataSchema.DC_SCHEMA, "format", null, Item.ANY); + clearMetadata(context, bitstream, MetadataSchemaEnum.DC.getName(), "format", null, Item.ANY); // Update the ID in the table row bitstream.setFormat(bitstreamFormat); diff --git a/dspace-api/src/main/java/org/dspace/content/Bundle.java b/dspace-api/src/main/java/org/dspace/content/Bundle.java index 5fe7100d4f..88f21c2c2f 100644 --- a/dspace-api/src/main/java/org/dspace/content/Bundle.java +++ b/dspace-api/src/main/java/org/dspace/content/Bundle.java @@ -88,7 +88,7 @@ public class Bundle extends DSpaceObject implements DSpaceObjectLegacySupport { */ @Override public String getName() { - return getBundleService().getMetadataFirstValue(this, MetadataSchema.DC_SCHEMA, "title", null, Item.ANY); + return getBundleService().getMetadataFirstValue(this, MetadataSchemaEnum.DC.getName(), "title", null, Item.ANY); } /** @@ -100,7 +100,8 @@ public class Bundle extends DSpaceObject implements DSpaceObjectLegacySupport { * @throws SQLException if database error */ public void setName(Context context, String name) throws SQLException { - getBundleService().setMetadataSingleValue(context, this, MetadataSchema.DC_SCHEMA, "title", null, null, name); + getBundleService().setMetadataSingleValue(context, this, MetadataSchemaEnum.DC.getName(), + "title", null, null, name); } /** diff --git a/dspace-api/src/main/java/org/dspace/content/BundleServiceImpl.java b/dspace-api/src/main/java/org/dspace/content/BundleServiceImpl.java index d8ee51fadf..1e4f4daa07 100644 --- a/dspace-api/src/main/java/org/dspace/content/BundleServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/content/BundleServiceImpl.java @@ -16,8 +16,8 @@ import java.util.List; import java.util.UUID; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeConfiguration; import org.dspace.authorize.AuthorizeException; import org.dspace.authorize.ResourcePolicy; @@ -45,7 +45,7 @@ public class BundleServiceImpl extends DSpaceObjectServiceImpl implement /** * log4j logger */ - private static Logger log = Logger.getLogger(Bundle.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(Bundle.class); @Autowired(required = true) protected BundleDAO bundleDAO; diff --git a/dspace-api/src/main/java/org/dspace/content/Collection.java b/dspace-api/src/main/java/org/dspace/content/Collection.java index 249c5a19a2..e8431dca1c 100644 --- a/dspace-api/src/main/java/org/dspace/content/Collection.java +++ b/dspace-api/src/main/java/org/dspace/content/Collection.java @@ -134,7 +134,7 @@ public class Collection extends DSpaceObject implements DSpaceObjectLegacySuppor @Override public String getName() { String value = getCollectionService() - .getMetadataFirstValue(this, MetadataSchema.DC_SCHEMA, "title", null, Item.ANY); + .getMetadataFirstValue(this, MetadataSchemaEnum.DC.getName(), "title", null, Item.ANY); return value == null ? "" : value; } diff --git a/dspace-api/src/main/java/org/dspace/content/CollectionServiceImpl.java b/dspace-api/src/main/java/org/dspace/content/CollectionServiceImpl.java index bd7034856f..7e8e7b638e 100644 --- a/dspace-api/src/main/java/org/dspace/content/CollectionServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/content/CollectionServiceImpl.java @@ -20,8 +20,8 @@ import java.util.MissingResourceException; import java.util.UUID; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.app.util.AuthorizeUtil; import org.dspace.authorize.AuthorizeConfiguration; import org.dspace.authorize.AuthorizeException; @@ -61,7 +61,7 @@ public class CollectionServiceImpl extends DSpaceObjectServiceImpl i /** * log4j category */ - private static final Logger log = Logger.getLogger(CollectionServiceImpl.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(CollectionServiceImpl.class); @Autowired(required = true) protected CollectionDAO collectionDAO; @@ -143,10 +143,11 @@ public class CollectionServiceImpl extends DSpaceObjectServiceImpl i @Override public List findAll(Context context) throws SQLException { - MetadataField nameField = metadataFieldService.findByElement(context, MetadataSchema.DC_SCHEMA, "title", null); + MetadataField nameField = metadataFieldService.findByElement(context, MetadataSchemaEnum.DC.getName(), + "title", null); if (nameField == null) { throw new IllegalArgumentException( - "Required metadata field '" + MetadataSchema.DC_SCHEMA + ".title' doesn't exist!"); + "Required metadata field '" + MetadataSchemaEnum.DC.getName() + ".title' doesn't exist!"); } return collectionDAO.findAll(context, nameField); @@ -154,10 +155,11 @@ public class CollectionServiceImpl extends DSpaceObjectServiceImpl i @Override public List findAll(Context context, Integer limit, Integer offset) throws SQLException { - MetadataField nameField = metadataFieldService.findByElement(context, MetadataSchema.DC_SCHEMA, "title", null); + MetadataField nameField = metadataFieldService.findByElement(context, MetadataSchemaEnum.DC.getName(), + "title", null); if (nameField == null) { throw new IllegalArgumentException( - "Required metadata field '" + MetadataSchema.DC_SCHEMA + ".title' doesn't exist!"); + "Required metadata field '" + MetadataSchemaEnum.DC.getName() + ".title' doesn't exist!"); } return collectionDAO.findAll(context, nameField, limit, offset); diff --git a/dspace-api/src/main/java/org/dspace/content/Community.java b/dspace-api/src/main/java/org/dspace/content/Community.java index 448e86e039..1c14f69005 100644 --- a/dspace-api/src/main/java/org/dspace/content/Community.java +++ b/dspace-api/src/main/java/org/dspace/content/Community.java @@ -23,8 +23,8 @@ import javax.persistence.OneToOne; import javax.persistence.Table; import javax.persistence.Transient; -import org.apache.commons.lang.builder.HashCodeBuilder; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.builder.HashCodeBuilder; +import org.apache.logging.log4j.Logger; import org.dspace.content.comparator.NameAscendingComparator; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.CommunityService; @@ -52,7 +52,7 @@ public class Community extends DSpaceObject implements DSpaceObjectLegacySupport /** * log4j category */ - private static final Logger log = Logger.getLogger(Community.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(Community.class); @Column(name = "community_id", insertable = false, updatable = false) private Integer legacyId; @@ -254,7 +254,7 @@ public class Community extends DSpaceObject implements DSpaceObjectLegacySupport @Override public String getName() { String value = getCommunityService() - .getMetadataFirstValue(this, MetadataSchema.DC_SCHEMA, "title", null, Item.ANY); + .getMetadataFirstValue(this, MetadataSchemaEnum.DC.getName(), "title", null, Item.ANY); return value == null ? "" : value; } diff --git a/dspace-api/src/main/java/org/dspace/content/CommunityServiceImpl.java b/dspace-api/src/main/java/org/dspace/content/CommunityServiceImpl.java index 667b0268b1..8169375f15 100644 --- a/dspace-api/src/main/java/org/dspace/content/CommunityServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/content/CommunityServiceImpl.java @@ -17,8 +17,8 @@ import java.util.MissingResourceException; import java.util.UUID; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.app.util.AuthorizeUtil; import org.dspace.authorize.AuthorizeConfiguration; import org.dspace.authorize.AuthorizeException; @@ -51,7 +51,7 @@ public class CommunityServiceImpl extends DSpaceObjectServiceImpl imp /** * log4j category */ - private static Logger log = Logger.getLogger(CommunityServiceImpl.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(CommunityServiceImpl.class); @Autowired(required = true) protected CommunityDAO communityDAO; @@ -139,10 +139,11 @@ public class CommunityServiceImpl extends DSpaceObjectServiceImpl imp @Override public List findAll(Context context) throws SQLException { - MetadataField sortField = metadataFieldService.findByElement(context, MetadataSchema.DC_SCHEMA, "title", null); + MetadataField sortField = metadataFieldService.findByElement(context, MetadataSchemaEnum.DC.getName(), + "title", null); if (sortField == null) { throw new IllegalArgumentException( - "Required metadata field '" + MetadataSchema.DC_SCHEMA + ".title' doesn't exist!"); + "Required metadata field '" + MetadataSchemaEnum.DC.getName() + ".title' doesn't exist!"); } return communityDAO.findAll(context, sortField); @@ -150,10 +151,11 @@ public class CommunityServiceImpl extends DSpaceObjectServiceImpl imp @Override public List findAll(Context context, Integer limit, Integer offset) throws SQLException { - MetadataField nameField = metadataFieldService.findByElement(context, MetadataSchema.DC_SCHEMA, "title", null); + MetadataField nameField = metadataFieldService.findByElement(context, MetadataSchemaEnum.DC.getName(), + "title", null); if (nameField == null) { throw new IllegalArgumentException( - "Required metadata field '" + MetadataSchema.DC_SCHEMA + ".title' doesn't exist!"); + "Required metadata field '" + MetadataSchemaEnum.DC.getName() + ".title' doesn't exist!"); } return communityDAO.findAll(context, nameField, limit, offset); @@ -162,10 +164,11 @@ public class CommunityServiceImpl extends DSpaceObjectServiceImpl imp @Override public List findAllTop(Context context) throws SQLException { // get all communities that are not children - MetadataField sortField = metadataFieldService.findByElement(context, MetadataSchema.DC_SCHEMA, "title", null); + MetadataField sortField = metadataFieldService.findByElement(context, MetadataSchemaEnum.DC.getName(), + "title", null); if (sortField == null) { throw new IllegalArgumentException( - "Required metadata field '" + MetadataSchema.DC_SCHEMA + ".title' doesn't exist!"); + "Required metadata field '" + MetadataSchemaEnum.DC.getName() + ".title' doesn't exist!"); } return communityDAO.findAllNoParent(context, sortField); diff --git a/dspace-api/src/main/java/org/dspace/content/DCDate.java b/dspace-api/src/main/java/org/dspace/content/DCDate.java index 729b1d3753..4acccb2d84 100644 --- a/dspace-api/src/main/java/org/dspace/content/DCDate.java +++ b/dspace-api/src/main/java/org/dspace/content/DCDate.java @@ -18,7 +18,7 @@ import java.util.Locale; import java.util.Map; import java.util.TimeZone; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; // FIXME: Not very robust - assumes dates will always be valid @@ -45,7 +45,7 @@ public class DCDate { /** * Logger */ - private static Logger log = Logger.getLogger(DCDate.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(DCDate.class); // UTC timezone private static final TimeZone utcZone = TimeZone.getTimeZone("UTC"); diff --git a/dspace-api/src/main/java/org/dspace/content/DSpaceObjectServiceImpl.java b/dspace-api/src/main/java/org/dspace/content/DSpaceObjectServiceImpl.java index 6caf09f2d0..fe4c5349d1 100644 --- a/dspace-api/src/main/java/org/dspace/content/DSpaceObjectServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/content/DSpaceObjectServiceImpl.java @@ -18,9 +18,9 @@ import java.util.Map; import java.util.StringTokenizer; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang.ArrayUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.authority.Choices; import org.dspace.content.authority.service.ChoiceAuthorityService; @@ -51,7 +51,7 @@ public abstract class DSpaceObjectServiceImpl implements /** * log4j category */ - private static final Logger log = Logger.getLogger(DSpaceObjectServiceImpl.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(DSpaceObjectServiceImpl.class); @Autowired(required = true) protected ChoiceAuthorityService choiceAuthorityService; @@ -74,7 +74,7 @@ public abstract class DSpaceObjectServiceImpl implements @Override public String getName(T dso) { - String value = getMetadataFirstValue(dso, MetadataSchema.DC_SCHEMA, "title", null, Item.ANY); + String value = getMetadataFirstValue(dso, MetadataSchemaEnum.DC.getName(), "title", null, Item.ANY); return value == null ? "" : value; } @@ -604,23 +604,23 @@ public abstract class DSpaceObjectServiceImpl implements protected String[] getMDValueByLegacyField(String field) { switch (field) { case "introductory_text": - return new String[] {MetadataSchema.DC_SCHEMA, "description", null}; + return new String[] {MetadataSchemaEnum.DC.getName(), "description", null}; case "short_description": - return new String[] {MetadataSchema.DC_SCHEMA, "description", "abstract"}; + return new String[] {MetadataSchemaEnum.DC.getName(), "description", "abstract"}; case "side_bar_text": - return new String[] {MetadataSchema.DC_SCHEMA, "description", "tableofcontents"}; + return new String[] {MetadataSchemaEnum.DC.getName(), "description", "tableofcontents"}; case "copyright_text": - return new String[] {MetadataSchema.DC_SCHEMA, "rights", null}; + return new String[] {MetadataSchemaEnum.DC.getName(), "rights", null}; case "name": - return new String[] {MetadataSchema.DC_SCHEMA, "title", null}; + return new String[] {MetadataSchemaEnum.DC.getName(), "title", null}; case "provenance_description": - return new String[] {MetadataSchema.DC_SCHEMA, "provenance", null}; + return new String[] {MetadataSchemaEnum.DC.getName(), "provenance", null}; case "license": - return new String[] {MetadataSchema.DC_SCHEMA, "rights", "license"}; + return new String[] {MetadataSchemaEnum.DC.getName(), "rights", "license"}; case "user_format_description": - return new String[] {MetadataSchema.DC_SCHEMA, "format", null}; + return new String[] {MetadataSchemaEnum.DC.getName(), "format", null}; case "source": - return new String[] {MetadataSchema.DC_SCHEMA, "source", null}; + return new String[] {MetadataSchemaEnum.DC.getName(), "source", null}; case "firstname": return new String[] {"eperson", "firstname", null}; case "lastname": diff --git a/dspace-api/src/main/java/org/dspace/content/EntityServiceImpl.java b/dspace-api/src/main/java/org/dspace/content/EntityServiceImpl.java index a3785a756b..5339fb440e 100644 --- a/dspace-api/src/main/java/org/dspace/content/EntityServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/content/EntityServiceImpl.java @@ -12,7 +12,7 @@ import java.util.LinkedList; import java.util.List; import java.util.UUID; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.dspace.content.service.EntityService; import org.dspace.content.service.EntityTypeService; import org.dspace.content.service.ItemService; diff --git a/dspace-api/src/main/java/org/dspace/content/InstallItemServiceImpl.java b/dspace-api/src/main/java/org/dspace/content/InstallItemServiceImpl.java index 59298e4c31..11cd4c107c 100644 --- a/dspace-api/src/main/java/org/dspace/content/InstallItemServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/content/InstallItemServiceImpl.java @@ -104,9 +104,10 @@ public class InstallItemServiceImpl implements InstallItemService { // If the item doesn't have a date.accessioned, set it to today List dateAccessioned = itemService - .getMetadata(item, MetadataSchema.DC_SCHEMA, "date", "accessioned", Item.ANY); + .getMetadata(item, MetadataSchemaEnum.DC.getName(), "date", "accessioned", Item.ANY); if (dateAccessioned.isEmpty()) { - itemService.addMetadata(c, item, MetadataSchema.DC_SCHEMA, "date", "accessioned", null, now.toString()); + itemService.addMetadata(c, item, MetadataSchemaEnum.DC.getName(), + "date", "accessioned", null, now.toString()); } // If issue date is set as "today" (literal string), then set it to current date @@ -114,8 +115,8 @@ public class InstallItemServiceImpl implements InstallItemService { // replacing "today" with today's date. // NOTE: As of DSpace 4.0, DSpace no longer sets an issue date by default List currentDateIssued = itemService - .getMetadata(item, MetadataSchema.DC_SCHEMA, "date", "issued", Item.ANY); - itemService.clearMetadata(c, item, MetadataSchema.DC_SCHEMA, "date", "issued", Item.ANY); + .getMetadata(item, MetadataSchemaEnum.DC.getName(), "date", "issued", Item.ANY); + itemService.clearMetadata(c, item, MetadataSchemaEnum.DC.getName(), "date", "issued", Item.ANY); for (MetadataValue dcv : currentDateIssued) { if (dcv.getValue() != null && dcv.getValue().equalsIgnoreCase("today")) { DCDate issued = new DCDate(now.getYear(), now.getMonth(), now.getDay(), -1, -1, -1); @@ -127,7 +128,8 @@ public class InstallItemServiceImpl implements InstallItemService { // Record that the item was restored String provDescription = "Restored into DSpace on " + now + " (GMT)."; - itemService.addMetadata(c, item, MetadataSchema.DC_SCHEMA, "description", "provenance", "en", provDescription); + itemService.addMetadata(c, item, MetadataSchemaEnum.DC.getName(), + "description", "provenance", "en", provDescription); return finishItem(c, item, is); } @@ -137,14 +139,16 @@ public class InstallItemServiceImpl implements InstallItemService { throws SQLException, AuthorizeException { // create accession date DCDate now = DCDate.getCurrent(); - itemService.addMetadata(c, item, MetadataSchema.DC_SCHEMA, "date", "accessioned", null, now.toString()); + itemService.addMetadata(c, item, MetadataSchemaEnum.DC.getName(), + "date", "accessioned", null, now.toString()); // add date available if not under embargo, otherwise it will // be set when the embargo is lifted. // this will flush out fatal embargo metadata // problems before we set inArchive. if (embargoService.getEmbargoTermsAsDate(c, item) == null) { - itemService.addMetadata(c, item, MetadataSchema.DC_SCHEMA, "date", "available", null, now.toString()); + itemService.addMetadata(c, item, MetadataSchemaEnum.DC.getName(), + "date", "available", null, now.toString()); } // If issue date is set as "today" (literal string), then set it to current date @@ -152,8 +156,8 @@ public class InstallItemServiceImpl implements InstallItemService { // replacing "today" with today's date. // NOTE: As of DSpace 4.0, DSpace no longer sets an issue date by default List currentDateIssued = itemService - .getMetadata(item, MetadataSchema.DC_SCHEMA, "date", "issued", Item.ANY); - itemService.clearMetadata(c, item, MetadataSchema.DC_SCHEMA, "date", "issued", Item.ANY); + .getMetadata(item, MetadataSchemaEnum.DC.getName(), "date", "issued", Item.ANY); + itemService.clearMetadata(c, item, MetadataSchemaEnum.DC.getName(), "date", "issued", Item.ANY); for (MetadataValue dcv : currentDateIssued) { if (dcv.getValue() != null && dcv.getValue().equalsIgnoreCase("today")) { DCDate issued = new DCDate(now.getYear(), now.getMonth(), now.getDay(), -1, -1, -1); @@ -178,7 +182,8 @@ public class InstallItemServiceImpl implements InstallItemService { } // Add provenance description - itemService.addMetadata(c, item, MetadataSchema.DC_SCHEMA, "description", "provenance", "en", provDescription); + itemService.addMetadata(c, item, MetadataSchemaEnum.DC.getName(), + "description", "provenance", "en", provDescription); } /** diff --git a/dspace-api/src/main/java/org/dspace/content/Item.java b/dspace-api/src/main/java/org/dspace/content/Item.java index cfe86147f8..fdcffcb4c1 100644 --- a/dspace-api/src/main/java/org/dspace/content/Item.java +++ b/dspace-api/src/main/java/org/dspace/content/Item.java @@ -352,7 +352,7 @@ public class Item extends DSpaceObject implements DSpaceObjectLegacySupport { @Override public String getName() { - return getItemService().getMetadataFirstValue(this, MetadataSchema.DC_SCHEMA, "title", null, Item.ANY); + return getItemService().getMetadataFirstValue(this, MetadataSchemaEnum.DC.getName(), "title", null, Item.ANY); } @Override diff --git a/dspace-api/src/main/java/org/dspace/content/ItemComparator.java b/dspace-api/src/main/java/org/dspace/content/ItemComparator.java index 27e869d40b..63182e4aae 100644 --- a/dspace-api/src/main/java/org/dspace/content/ItemComparator.java +++ b/dspace-api/src/main/java/org/dspace/content/ItemComparator.java @@ -15,7 +15,7 @@ import java.util.List; import java.util.Map; import java.util.Set; -import org.apache.commons.lang.builder.HashCodeBuilder; +import org.apache.commons.lang3.builder.HashCodeBuilder; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.ItemService; import org.dspace.sort.OrderFormat; @@ -174,7 +174,7 @@ public class ItemComparator implements Comparator, Serializable { protected String getValue(Item item) { // The overall array and each element are guaranteed non-null List dcvalues = itemService - .getMetadata(item, MetadataSchema.DC_SCHEMA, element, qualifier, language); + .getMetadata(item, MetadataSchemaEnum.DC.getName(), element, qualifier, language); if (dcvalues.isEmpty()) { return null; diff --git a/dspace-api/src/main/java/org/dspace/content/ItemServiceImpl.java b/dspace-api/src/main/java/org/dspace/content/ItemServiceImpl.java index 9789d457bf..836a922113 100644 --- a/dspace-api/src/main/java/org/dspace/content/ItemServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/content/ItemServiceImpl.java @@ -21,7 +21,7 @@ import java.util.UUID; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.app.util.AuthorizeUtil; import org.dspace.authorize.AuthorizeConfiguration; import org.dspace.authorize.AuthorizeException; @@ -69,7 +69,7 @@ public class ItemServiceImpl extends DSpaceObjectServiceImpl implements It /** * log4j category */ - private static final Logger log = Logger.getLogger(Item.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(Item.class); @Autowired(required = true) protected ItemDAO itemDAO; @@ -230,10 +230,10 @@ public class ItemServiceImpl extends DSpaceObjectServiceImpl implements It throws SQLException { MetadataField metadataField = metadataFieldService - .findByElement(context, MetadataSchema.DC_SCHEMA, "date", "accessioned"); + .findByElement(context, MetadataSchemaEnum.DC.getName(), "date", "accessioned"); if (metadataField == null) { throw new IllegalArgumentException( - "Required metadata field '" + MetadataSchema.DC_SCHEMA + ".date.accessioned' doesn't exist!"); + "Required metadata field '" + MetadataSchemaEnum.DC.getName() + ".date.accessioned' doesn't exist!"); } return itemDAO.findBySubmitter(context, eperson, metadataField, limit); @@ -554,7 +554,7 @@ public class ItemServiceImpl extends DSpaceObjectServiceImpl implements It prov.append(installItemService.getBitstreamProvenanceMessage(context, item)); - addMetadata(context, item, MetadataSchema.DC_SCHEMA, "description", "provenance", "en", prov.toString()); + addMetadata(context, item, MetadataSchemaEnum.DC.getName(), "description", "provenance", "en", prov.toString()); // Update item in DB update(context, item); @@ -609,7 +609,7 @@ public class ItemServiceImpl extends DSpaceObjectServiceImpl implements It // bitstream checksums prov.append(installItemService.getBitstreamProvenanceMessage(context, item)); - addMetadata(context, item, MetadataSchema.DC_SCHEMA, "description", "provenance", "en", prov.toString()); + addMetadata(context, item, MetadataSchemaEnum.DC.getName(), "description", "provenance", "en", prov.toString()); // Update item in DB update(context, item); @@ -1292,7 +1292,9 @@ prevent the generation of resource policy entry values with null dspace_object a */ @Override public List getMetadata(Item item, String schema, String element, String qualifier, String lang) { - if (StringUtils.equals(schema, "relation") && !StringUtils.equals(element, "type")) { + //Fields of the relation schema are virtual metadata + //except for relation.type which is the type of item in the model + if (StringUtils.equals(schema, MetadataSchemaEnum.RELATION.getName()) && !StringUtils.equals(element, "type")) { List relationMetadata = getRelationshipMetadata(item, false); List listToReturn = new LinkedList<>(); @@ -1320,7 +1322,7 @@ prevent the generation of resource policy entry values with null dspace_object a } @Override - public List getRelationshipMetadata(Item item, boolean extra) { + public List getRelationshipMetadata(Item item, boolean enableVirtualMetadata) { Context context = new Context(); List fullMetadataValueList = new LinkedList<>(); try { @@ -1329,8 +1331,8 @@ prevent the generation of resource policy entry values with null dspace_object a if (StringUtils.isNotBlank(entityType)) { List relationships = relationshipService.findByItem(context, item); for (Relationship relationship : relationships) { - fullMetadataValueList - .addAll(handleItemRelationship(context, item, entityType, relationship, extra)); + fullMetadataValueList.addAll(handleItemRelationship(context, item, entityType, + relationship, enableVirtualMetadata)); } } @@ -1341,7 +1343,7 @@ prevent the generation of resource policy entry values with null dspace_object a } private List handleItemRelationship(Context context, Item item, String entityType, - Relationship relationship, boolean extra) + Relationship relationship, boolean enableVirtualMetadata) throws SQLException { List resultingMetadataValueList = new LinkedList<>(); RelationshipType relationshipType = relationship.getRelationshipType(); @@ -1360,7 +1362,7 @@ prevent the generation of resource policy entry values with null dspace_object a relationName = relationship.getRelationshipType().getRightLabel(); } - if (hashMaps != null && extra) { + if (hashMaps != null && enableVirtualMetadata) { resultingMetadataValueList.addAll(handleRelationshipTypeMetadataMappping(context, item, hashMaps, otherItem, relationName, relationship.getID())); @@ -1378,12 +1380,13 @@ prevent the generation of resource policy entry values with null dspace_object a String key = entry.getKey(); VirtualBean virtualBean = entry.getValue(); - RelationshipMetadataValue metadataValue = constructMetadataValue(context, key); - metadataValue = constructResultingMetadataValue(context, item, otherItem, virtualBean, metadataValue, - relationshipId); - metadataValue.setUseForPlace(virtualBean.getUseForPlace()); - if (StringUtils.isNotBlank(metadataValue.getValue())) { - resultingMetadataValueList.add(metadataValue); + for (String value : virtualBean.getValues(context, otherItem)) { + RelationshipMetadataValue metadataValue = constructMetadataValue(context, key); + metadataValue = constructResultingMetadataValue(item, value, metadataValue, relationshipId); + metadataValue.setUseForPlace(virtualBean.getUseForPlace()); + if (StringUtils.isNotBlank(metadataValue.getValue())) { + resultingMetadataValueList.add(metadataValue); + } } } return resultingMetadataValueList; @@ -1392,7 +1395,9 @@ prevent the generation of resource policy entry values with null dspace_object a private RelationshipMetadataValue getRelationMetadataFromOtherItem(Context context, Item otherItem, String relationName, Integer relationshipId) { - RelationshipMetadataValue metadataValue = constructMetadataValue(context, "relation." + relationName); + RelationshipMetadataValue metadataValue = constructMetadataValue(context, + MetadataSchemaEnum.RELATION + .getName() + "." + relationName); metadataValue.setAuthority("virtual::" + relationshipId); metadataValue.setValue(otherItem.getID().toString()); return metadataValue; @@ -1412,12 +1417,10 @@ prevent the generation of resource policy entry values with null dspace_object a return entityType; } - private RelationshipMetadataValue constructResultingMetadataValue(Context context, Item item, Item otherItem, - VirtualBean virtualBean, + private RelationshipMetadataValue constructResultingMetadataValue(Item item, String value, RelationshipMetadataValue metadataValue, - Integer relationshipId) - throws SQLException { - metadataValue.setValue(virtualBean.getValue(context, otherItem)); + int relationshipId) { + metadataValue.setValue(value); metadataValue.setAuthority("virtual::" + relationshipId); metadataValue.setConfidence(-1); metadataValue.setDSpaceObject(item); diff --git a/dspace-api/src/main/java/org/dspace/content/MetadataFieldServiceImpl.java b/dspace-api/src/main/java/org/dspace/content/MetadataFieldServiceImpl.java index c48ff015e4..e3ed9c8ae7 100644 --- a/dspace-api/src/main/java/org/dspace/content/MetadataFieldServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/content/MetadataFieldServiceImpl.java @@ -12,7 +12,7 @@ import java.sql.SQLException; import java.util.List; import org.apache.commons.collections4.CollectionUtils; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.authorize.service.AuthorizeService; import org.dspace.content.dao.MetadataFieldDAO; @@ -33,7 +33,7 @@ public class MetadataFieldServiceImpl implements MetadataFieldService { /** * log4j logger */ - private static Logger log = Logger.getLogger(MetadataFieldServiceImpl.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(MetadataFieldServiceImpl.class); @Autowired(required = true) protected MetadataFieldDAO metadataFieldDAO; diff --git a/dspace-api/src/main/java/org/dspace/content/MetadataSchema.java b/dspace-api/src/main/java/org/dspace/content/MetadataSchema.java index 511cda3f7b..96bef0fa2c 100644 --- a/dspace-api/src/main/java/org/dspace/content/MetadataSchema.java +++ b/dspace-api/src/main/java/org/dspace/content/MetadataSchema.java @@ -39,10 +39,6 @@ import org.hibernate.proxy.HibernateProxyHelper; @org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) @Table(name = "metadataschemaregistry") public class MetadataSchema implements ReloadableEntity { - /** - * Short Name of built-in Dublin Core schema. - */ - public static final String DC_SCHEMA = "dc"; @Id @Column(name = "metadata_schema_id") diff --git a/dspace-api/src/main/java/org/dspace/content/MetadataSchemaEnum.java b/dspace-api/src/main/java/org/dspace/content/MetadataSchemaEnum.java new file mode 100644 index 0000000000..cac4485ec9 --- /dev/null +++ b/dspace-api/src/main/java/org/dspace/content/MetadataSchemaEnum.java @@ -0,0 +1,39 @@ +/** + * The contents of this file are subject to the license and copyright + * detailed in the LICENSE and NOTICE files at the root of the source + * tree and available online at + * + * http://www.dspace.org/license/ + */ +package org.dspace.content; + +/** + * This is an enum that holds track of a few special MetadataSchema types. + * It is important to note that this list is not exhaustive for the MetadataSchema + * types and different MetadataSchema can easily be made. + * These MetadataSchema objects are simply required. + */ +public enum MetadataSchemaEnum { + DC("dc"), RELATION("relation"); + + /** + * The String representation of the MetadataSchemaEnum + */ + private String name; + + /** + * Default constructor with the name parameter + * @param name The name parameter + */ + MetadataSchemaEnum(String name) { + this.name = name; + } + + /** + * Generic getter for the String representation of the enum object + * @return The name of the enum object + */ + public String getName() { + return name; + } +} diff --git a/dspace-api/src/main/java/org/dspace/content/MetadataSchemaServiceImpl.java b/dspace-api/src/main/java/org/dspace/content/MetadataSchemaServiceImpl.java index f2b13fb8ea..185addfb01 100644 --- a/dspace-api/src/main/java/org/dspace/content/MetadataSchemaServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/content/MetadataSchemaServiceImpl.java @@ -10,7 +10,7 @@ package org.dspace.content; import java.sql.SQLException; import java.util.List; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.authorize.service.AuthorizeService; import org.dspace.content.dao.MetadataSchemaDAO; @@ -31,7 +31,7 @@ public class MetadataSchemaServiceImpl implements MetadataSchemaService { /** * log4j logger */ - private static Logger log = Logger.getLogger(MetadataSchemaServiceImpl.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(MetadataSchemaServiceImpl.class); @Autowired(required = true) protected AuthorizeService authorizeService; diff --git a/dspace-api/src/main/java/org/dspace/content/MetadataValueServiceImpl.java b/dspace-api/src/main/java/org/dspace/content/MetadataValueServiceImpl.java index 396265467b..e7b00ab85c 100644 --- a/dspace-api/src/main/java/org/dspace/content/MetadataValueServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/content/MetadataValueServiceImpl.java @@ -12,7 +12,7 @@ import java.sql.SQLException; import java.util.Iterator; import java.util.List; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.authorize.service.AuthorizeService; import org.dspace.content.dao.MetadataValueDAO; @@ -33,7 +33,7 @@ import org.springframework.beans.factory.annotation.Autowired; */ public class MetadataValueServiceImpl implements MetadataValueService { - private static final Logger log = Logger.getLogger(MetadataValueServiceImpl.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(MetadataValueServiceImpl.class); @Autowired(required = true) protected AuthorizeService authorizeService; diff --git a/dspace-api/src/main/java/org/dspace/content/RelationshipServiceImpl.java b/dspace-api/src/main/java/org/dspace/content/RelationshipServiceImpl.java index 8f13bd995a..2831cc3789 100644 --- a/dspace-api/src/main/java/org/dspace/content/RelationshipServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/content/RelationshipServiceImpl.java @@ -12,9 +12,10 @@ import java.util.Collections; import java.util.LinkedList; import java.util.List; -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.authorize.service.AuthorizeService; import org.dspace.content.dao.RelationshipDAO; @@ -26,7 +27,7 @@ import org.springframework.beans.factory.annotation.Autowired; public class RelationshipServiceImpl implements RelationshipService { - private static final Logger log = Logger.getLogger(RelationshipServiceImpl.class); + private static final Logger log = LogManager.getLogger(); @Autowired(required = true) protected RelationshipDAO relationshipDAO; @@ -297,6 +298,7 @@ public class RelationshipServiceImpl implements RelationshipService { return listToReturn; } + @Override public List findByItemAndRelationshipType(Context context, Item item, RelationshipType relationshipType) throws SQLException { diff --git a/dspace-api/src/main/java/org/dspace/content/RelationshipTypeServiceImpl.java b/dspace-api/src/main/java/org/dspace/content/RelationshipTypeServiceImpl.java index 299d44447d..64489c02b9 100644 --- a/dspace-api/src/main/java/org/dspace/content/RelationshipTypeServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/content/RelationshipTypeServiceImpl.java @@ -85,6 +85,7 @@ public class RelationshipTypeServiceImpl implements RelationshipTypeService { relationshipTypeDAO.delete(context, relationshipType); } + @Override public List findByLeftOrRightLabel(Context context, String label) throws SQLException { return relationshipTypeDAO.findByLeftOrRightLabel(context, label); } diff --git a/dspace-api/src/main/java/org/dspace/content/WorkspaceItem.java b/dspace-api/src/main/java/org/dspace/content/WorkspaceItem.java index 42ecce9403..cfe6211b4a 100644 --- a/dspace-api/src/main/java/org/dspace/content/WorkspaceItem.java +++ b/dspace-api/src/main/java/org/dspace/content/WorkspaceItem.java @@ -25,7 +25,7 @@ import javax.persistence.OneToOne; import javax.persistence.SequenceGenerator; import javax.persistence.Table; -import org.apache.commons.lang.builder.HashCodeBuilder; +import org.apache.commons.lang3.builder.HashCodeBuilder; import org.dspace.core.Context; import org.dspace.core.ReloadableEntity; import org.dspace.eperson.EPerson; diff --git a/dspace-api/src/main/java/org/dspace/content/WorkspaceItemServiceImpl.java b/dspace-api/src/main/java/org/dspace/content/WorkspaceItemServiceImpl.java index d378ecdb27..93357d1712 100644 --- a/dspace-api/src/main/java/org/dspace/content/WorkspaceItemServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/content/WorkspaceItemServiceImpl.java @@ -13,7 +13,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.app.util.DCInputsReaderException; import org.dspace.app.util.Util; import org.dspace.authorize.AuthorizeException; @@ -40,7 +40,7 @@ import org.springframework.beans.factory.annotation.Autowired; */ public class WorkspaceItemServiceImpl implements WorkspaceItemService { - private static final Logger log = Logger.getLogger(WorkspaceItemServiceImpl.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(WorkspaceItemServiceImpl.class); @Autowired(required = true) protected WorkspaceItemDAO workspaceItemDAO; diff --git a/dspace-api/src/main/java/org/dspace/content/authority/ChoiceAuthorityServiceImpl.java b/dspace-api/src/main/java/org/dspace/content/authority/ChoiceAuthorityServiceImpl.java index 94d5696f5e..c6fe528fdb 100644 --- a/dspace-api/src/main/java/org/dspace/content/authority/ChoiceAuthorityServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/content/authority/ChoiceAuthorityServiceImpl.java @@ -14,7 +14,7 @@ import java.util.Map; import java.util.Set; import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.app.util.DCInput; import org.dspace.app.util.DCInputSet; import org.dspace.app.util.DCInputsReader; @@ -49,7 +49,7 @@ import org.springframework.beans.factory.annotation.Autowired; * @see ChoiceAuthority */ public final class ChoiceAuthorityServiceImpl implements ChoiceAuthorityService { - private Logger log = Logger.getLogger(ChoiceAuthorityServiceImpl.class); + private Logger log = org.apache.logging.log4j.LogManager.getLogger(ChoiceAuthorityServiceImpl.class); // map of field key to authority plugin protected Map controller = new HashMap(); diff --git a/dspace-api/src/main/java/org/dspace/content/authority/Choices.java b/dspace-api/src/main/java/org/dspace/content/authority/Choices.java index ab5fa162cd..534e3083da 100644 --- a/dspace-api/src/main/java/org/dspace/content/authority/Choices.java +++ b/dspace-api/src/main/java/org/dspace/content/authority/Choices.java @@ -7,7 +7,7 @@ */ package org.dspace.content.authority; -import org.apache.commons.lang.ArrayUtils; +import org.apache.commons.lang3.ArrayUtils; /** * Record class to hold a set of Choices returned by an authority in response diff --git a/dspace-api/src/main/java/org/dspace/content/authority/DCInputAuthority.java b/dspace-api/src/main/java/org/dspace/content/authority/DCInputAuthority.java index bf01f37f02..a64ebdd971 100644 --- a/dspace-api/src/main/java/org/dspace/content/authority/DCInputAuthority.java +++ b/dspace-api/src/main/java/org/dspace/content/authority/DCInputAuthority.java @@ -12,8 +12,8 @@ import java.util.Arrays; import java.util.Iterator; import java.util.List; -import org.apache.commons.lang.ArrayUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.ArrayUtils; +import org.apache.logging.log4j.Logger; import org.dspace.app.util.DCInputsReader; import org.dspace.app.util.DCInputsReaderException; import org.dspace.content.Collection; @@ -42,7 +42,7 @@ import org.dspace.core.SelfNamedPlugin; * fields. */ public class DCInputAuthority extends SelfNamedPlugin implements ChoiceAuthority { - private static Logger log = Logger.getLogger(DCInputAuthority.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(DCInputAuthority.class); private String values[] = null; private String labels[] = null; 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 70159c89dd..516b9a06ae 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 @@ -16,9 +16,9 @@ import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathExpressionException; import javax.xml.xpath.XPathFactory; -import org.apache.commons.lang.ArrayUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.content.Collection; import org.dspace.core.SelfNamedPlugin; import org.dspace.services.ConfigurationService; @@ -56,7 +56,7 @@ import org.xml.sax.InputSource; public class DSpaceControlledVocabulary extends SelfNamedPlugin implements ChoiceAuthority { - private static Logger log = Logger.getLogger(DSpaceControlledVocabulary.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(DSpaceControlledVocabulary.class); protected static String xpathTemplate = "//node[contains(translate(@label,'ABCDEFGHIJKLMNOPQRSTUVWXYZ'," + "'abcdefghijklmnopqrstuvwxyz'),'%s')]"; protected static String idTemplate = "//node[@id = '%s']"; diff --git a/dspace-api/src/main/java/org/dspace/content/authority/InputFormSelfRegisterWrapperAuthority.java b/dspace-api/src/main/java/org/dspace/content/authority/InputFormSelfRegisterWrapperAuthority.java index acfe4292f6..60c3403728 100644 --- a/dspace-api/src/main/java/org/dspace/content/authority/InputFormSelfRegisterWrapperAuthority.java +++ b/dspace-api/src/main/java/org/dspace/content/authority/InputFormSelfRegisterWrapperAuthority.java @@ -13,8 +13,8 @@ import java.util.HashSet; import java.util.Map; import java.util.Set; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.app.util.DCInputsReader; import org.dspace.app.util.DCInputsReaderException; import org.dspace.content.Collection; @@ -32,7 +32,8 @@ import org.dspace.content.Collection; */ public class InputFormSelfRegisterWrapperAuthority implements ChoiceAuthority { - private static Logger log = Logger.getLogger(InputFormSelfRegisterWrapperAuthority.class); + private static Logger log = + org.apache.logging.log4j.LogManager.getLogger(InputFormSelfRegisterWrapperAuthority.class); private Map delegates = new HashMap(); diff --git a/dspace-api/src/main/java/org/dspace/content/authority/LCNameAuthority.java b/dspace-api/src/main/java/org/dspace/content/authority/LCNameAuthority.java index 77da8400ea..66bb7f1832 100644 --- a/dspace-api/src/main/java/org/dspace/content/authority/LCNameAuthority.java +++ b/dspace-api/src/main/java/org/dspace/content/authority/LCNameAuthority.java @@ -22,7 +22,7 @@ import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.utils.URIBuilder; import org.apache.http.impl.client.DefaultHttpClient; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.Collection; import org.dspace.content.DCPersonName; import org.dspace.core.ConfigurationManager; @@ -57,7 +57,7 @@ import org.xml.sax.helpers.DefaultHandler; * @version $Revision $ */ public class LCNameAuthority implements ChoiceAuthority { - private static final Logger log = Logger.getLogger(LCNameAuthority.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(LCNameAuthority.class); // get these from configuration protected static String url = null; diff --git a/dspace-api/src/main/java/org/dspace/content/authority/MetadataAuthorityServiceImpl.java b/dspace-api/src/main/java/org/dspace/content/authority/MetadataAuthorityServiceImpl.java index dc9797598f..6a5b17a029 100644 --- a/dspace-api/src/main/java/org/dspace/content/authority/MetadataAuthorityServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/content/authority/MetadataAuthorityServiceImpl.java @@ -15,7 +15,7 @@ import java.util.List; import java.util.Map; import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.app.util.DCInput; import org.dspace.app.util.DCInputSet; import org.dspace.app.util.DCInputsReader; @@ -57,7 +57,7 @@ import org.springframework.beans.factory.annotation.Autowired; * @see Choices */ public class MetadataAuthorityServiceImpl implements MetadataAuthorityService { - private static Logger log = Logger.getLogger(MetadataAuthorityServiceImpl.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(MetadataAuthorityServiceImpl.class); @Autowired(required = true) protected MetadataFieldService metadataFieldService; diff --git a/dspace-api/src/main/java/org/dspace/content/authority/SHERPARoMEOProtocol.java b/dspace-api/src/main/java/org/dspace/content/authority/SHERPARoMEOProtocol.java index 5bc94bf06a..5f0af29760 100644 --- a/dspace-api/src/main/java/org/dspace/content/authority/SHERPARoMEOProtocol.java +++ b/dspace-api/src/main/java/org/dspace/content/authority/SHERPARoMEOProtocol.java @@ -19,7 +19,7 @@ import org.apache.http.client.methods.HttpGet; import org.apache.http.client.utils.URLEncodedUtils; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.Collection; import org.dspace.core.ConfigurationManager; import org.xml.sax.Attributes; @@ -50,7 +50,7 @@ import org.xml.sax.helpers.DefaultHandler; * @see SHERPARoMEOJournalTitle */ public abstract class SHERPARoMEOProtocol implements ChoiceAuthority { - private static final Logger log = Logger.getLogger(SHERPARoMEOProtocol.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(SHERPARoMEOProtocol.class); // contact URL from configuration private static String url = null; diff --git a/dspace-api/src/main/java/org/dspace/content/authority/SolrAuthority.java b/dspace-api/src/main/java/org/dspace/content/authority/SolrAuthority.java index e6dbe45cc0..159f2901d0 100644 --- a/dspace-api/src/main/java/org/dspace/content/authority/SolrAuthority.java +++ b/dspace-api/src/main/java/org/dspace/content/authority/SolrAuthority.java @@ -12,8 +12,8 @@ import java.util.Iterator; import java.util.List; import java.util.Map; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.common.SolrDocument; @@ -36,10 +36,12 @@ import org.dspace.services.factory.DSpaceServicesFactory; */ public class SolrAuthority implements ChoiceAuthority { - private static final Logger log = Logger.getLogger(SolrAuthority.class); protected SolrAuthorityInterface source = DSpaceServicesFactory.getInstance().getServiceManager() .getServiceByName("AuthoritySource", SolrAuthorityInterface.class); + + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(SolrAuthority.class); + protected boolean externalResults = false; protected final AuthorityValueService authorityValueService = AuthorityServiceFactory.getInstance() .getAuthorityValueService(); diff --git a/dspace-api/src/main/java/org/dspace/content/authority/TestAuthority.java b/dspace-api/src/main/java/org/dspace/content/authority/TestAuthority.java index 8c3c94e5f1..a017e8fe28 100644 --- a/dspace-api/src/main/java/org/dspace/content/authority/TestAuthority.java +++ b/dspace-api/src/main/java/org/dspace/content/authority/TestAuthority.java @@ -10,7 +10,7 @@ package org.dspace.content.authority; import java.util.ArrayList; import java.util.List; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.dspace.content.Collection; /** diff --git a/dspace-api/src/main/java/org/dspace/content/comparator/NameAscendingComparator.java b/dspace-api/src/main/java/org/dspace/content/comparator/NameAscendingComparator.java index 980554228b..3240824169 100644 --- a/dspace-api/src/main/java/org/dspace/content/comparator/NameAscendingComparator.java +++ b/dspace-api/src/main/java/org/dspace/content/comparator/NameAscendingComparator.java @@ -9,8 +9,8 @@ package org.dspace.content.comparator; import java.util.Comparator; -import org.apache.commons.lang.ObjectUtils; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.ObjectUtils; +import org.apache.commons.lang3.StringUtils; import org.dspace.content.DSpaceObject; public class NameAscendingComparator implements Comparator { diff --git a/dspace-api/src/main/java/org/dspace/content/crosswalk/AIPTechMDCrosswalk.java b/dspace-api/src/main/java/org/dspace/content/crosswalk/AIPTechMDCrosswalk.java index 3f109d9a1e..d7ee2630e9 100644 --- a/dspace-api/src/main/java/org/dspace/content/crosswalk/AIPTechMDCrosswalk.java +++ b/dspace-api/src/main/java/org/dspace/content/crosswalk/AIPTechMDCrosswalk.java @@ -13,7 +13,7 @@ import java.util.ArrayList; import java.util.List; import org.apache.commons.collections4.CollectionUtils; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Bitstream; import org.dspace.content.BitstreamFormat; @@ -72,7 +72,7 @@ public class AIPTechMDCrosswalk implements IngestionCrosswalk, DisseminationCros /** * log4j category */ - private static Logger log = Logger.getLogger(AIPTechMDCrosswalk.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(AIPTechMDCrosswalk.class); protected final BitstreamFormatService bitstreamFormatService = ContentServiceFactory.getInstance() .getBitstreamFormatService(); protected final SiteService siteService = ContentServiceFactory.getInstance().getSiteService(); diff --git a/dspace-api/src/main/java/org/dspace/content/crosswalk/CreativeCommonsRDFStreamDisseminationCrosswalk.java b/dspace-api/src/main/java/org/dspace/content/crosswalk/CreativeCommonsRDFStreamDisseminationCrosswalk.java index d530f55905..9042a3a7f5 100644 --- a/dspace-api/src/main/java/org/dspace/content/crosswalk/CreativeCommonsRDFStreamDisseminationCrosswalk.java +++ b/dspace-api/src/main/java/org/dspace/content/crosswalk/CreativeCommonsRDFStreamDisseminationCrosswalk.java @@ -11,7 +11,7 @@ import java.io.IOException; import java.io.OutputStream; import java.sql.SQLException; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Bitstream; import org.dspace.content.DSpaceObject; @@ -35,7 +35,8 @@ public class CreativeCommonsRDFStreamDisseminationCrosswalk /** * log4j logger */ - private static Logger log = Logger.getLogger(CreativeCommonsRDFStreamDisseminationCrosswalk.class); + private static Logger log = + org.apache.logging.log4j.LogManager.getLogger(CreativeCommonsRDFStreamDisseminationCrosswalk.class); protected BitstreamService bitstreamService = ContentServiceFactory.getInstance().getBitstreamService(); protected CreativeCommonsService creativeCommonsService = LicenseServiceFactory.getInstance() .getCreativeCommonsService(); diff --git a/dspace-api/src/main/java/org/dspace/content/crosswalk/CreativeCommonsRDFStreamIngestionCrosswalk.java b/dspace-api/src/main/java/org/dspace/content/crosswalk/CreativeCommonsRDFStreamIngestionCrosswalk.java index d011202921..a5d503b6c2 100644 --- a/dspace-api/src/main/java/org/dspace/content/crosswalk/CreativeCommonsRDFStreamIngestionCrosswalk.java +++ b/dspace-api/src/main/java/org/dspace/content/crosswalk/CreativeCommonsRDFStreamIngestionCrosswalk.java @@ -11,7 +11,7 @@ import java.io.IOException; import java.io.InputStream; import java.sql.SQLException; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.DSpaceObject; import org.dspace.content.Item; @@ -38,7 +38,8 @@ public class CreativeCommonsRDFStreamIngestionCrosswalk /** * log4j logger */ - private static Logger log = Logger.getLogger(CreativeCommonsRDFStreamIngestionCrosswalk.class); + private static Logger log = + org.apache.logging.log4j.LogManager.getLogger(CreativeCommonsRDFStreamIngestionCrosswalk.class); protected CreativeCommonsService creativeCommonsService = LicenseServiceFactory.getInstance() .getCreativeCommonsService(); diff --git a/dspace-api/src/main/java/org/dspace/content/crosswalk/CreativeCommonsTextStreamDisseminationCrosswalk.java b/dspace-api/src/main/java/org/dspace/content/crosswalk/CreativeCommonsTextStreamDisseminationCrosswalk.java index bf6d97fbea..6d7becba42 100644 --- a/dspace-api/src/main/java/org/dspace/content/crosswalk/CreativeCommonsTextStreamDisseminationCrosswalk.java +++ b/dspace-api/src/main/java/org/dspace/content/crosswalk/CreativeCommonsTextStreamDisseminationCrosswalk.java @@ -11,7 +11,7 @@ import java.io.IOException; import java.io.OutputStream; import java.sql.SQLException; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Bitstream; import org.dspace.content.DSpaceObject; @@ -42,7 +42,8 @@ public class CreativeCommonsTextStreamDisseminationCrosswalk /** * log4j logger */ - private static Logger log = Logger.getLogger(CreativeCommonsTextStreamDisseminationCrosswalk.class); + private static Logger log = + org.apache.logging.log4j.LogManager.getLogger(CreativeCommonsTextStreamDisseminationCrosswalk.class); @Override public boolean canDisseminate(Context context, DSpaceObject dso) { diff --git a/dspace-api/src/main/java/org/dspace/content/crosswalk/DIMDisseminationCrosswalk.java b/dspace-api/src/main/java/org/dspace/content/crosswalk/DIMDisseminationCrosswalk.java index 05560f0b32..3f4d6bd44e 100644 --- a/dspace-api/src/main/java/org/dspace/content/crosswalk/DIMDisseminationCrosswalk.java +++ b/dspace-api/src/main/java/org/dspace/content/crosswalk/DIMDisseminationCrosswalk.java @@ -12,7 +12,7 @@ import java.sql.SQLException; import java.util.ArrayList; import java.util.List; -import org.apache.commons.lang.ArrayUtils; +import org.apache.commons.lang3.ArrayUtils; import org.dspace.authorize.AuthorizeException; import org.dspace.content.DSpaceObject; import org.dspace.content.Item; diff --git a/dspace-api/src/main/java/org/dspace/content/crosswalk/LicenseStreamDisseminationCrosswalk.java b/dspace-api/src/main/java/org/dspace/content/crosswalk/LicenseStreamDisseminationCrosswalk.java index da10a212ec..75b884613d 100644 --- a/dspace-api/src/main/java/org/dspace/content/crosswalk/LicenseStreamDisseminationCrosswalk.java +++ b/dspace-api/src/main/java/org/dspace/content/crosswalk/LicenseStreamDisseminationCrosswalk.java @@ -11,7 +11,7 @@ import java.io.IOException; import java.io.OutputStream; import java.sql.SQLException; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Bitstream; import org.dspace.content.DSpaceObject; @@ -34,7 +34,8 @@ public class LicenseStreamDisseminationCrosswalk /** * log4j logger */ - private static Logger log = Logger.getLogger(LicenseStreamDisseminationCrosswalk.class); + private static Logger log = + org.apache.logging.log4j.LogManager.getLogger(LicenseStreamDisseminationCrosswalk.class); protected BitstreamService bitstreamService = ContentServiceFactory.getInstance().getBitstreamService(); @Override diff --git a/dspace-api/src/main/java/org/dspace/content/crosswalk/LicenseStreamIngestionCrosswalk.java b/dspace-api/src/main/java/org/dspace/content/crosswalk/LicenseStreamIngestionCrosswalk.java index fb3653b4db..a7dcae944c 100644 --- a/dspace-api/src/main/java/org/dspace/content/crosswalk/LicenseStreamIngestionCrosswalk.java +++ b/dspace-api/src/main/java/org/dspace/content/crosswalk/LicenseStreamIngestionCrosswalk.java @@ -12,7 +12,7 @@ import java.io.IOException; import java.io.InputStream; import java.sql.SQLException; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.DSpaceObject; import org.dspace.content.Item; @@ -39,7 +39,7 @@ public class LicenseStreamIngestionCrosswalk /** * log4j logger */ - private static Logger log = Logger.getLogger(LicenseStreamIngestionCrosswalk.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(LicenseStreamIngestionCrosswalk.class); @Override public void ingest(Context context, DSpaceObject dso, InputStream in, String MIMEType) diff --git a/dspace-api/src/main/java/org/dspace/content/crosswalk/METSDisseminationCrosswalk.java b/dspace-api/src/main/java/org/dspace/content/crosswalk/METSDisseminationCrosswalk.java index efe24b63d5..c3b20bccb1 100644 --- a/dspace-api/src/main/java/org/dspace/content/crosswalk/METSDisseminationCrosswalk.java +++ b/dspace-api/src/main/java/org/dspace/content/crosswalk/METSDisseminationCrosswalk.java @@ -13,7 +13,7 @@ import java.sql.SQLException; import java.util.ArrayList; import java.util.List; -import org.apache.commons.lang.ArrayUtils; +import org.apache.commons.lang3.ArrayUtils; import org.dspace.authorize.AuthorizeException; import org.dspace.content.DSpaceObject; import org.dspace.content.packager.PackageDisseminator; diff --git a/dspace-api/src/main/java/org/dspace/content/crosswalk/METSRightsCrosswalk.java b/dspace-api/src/main/java/org/dspace/content/crosswalk/METSRightsCrosswalk.java index 4b76afd90b..559d463be2 100644 --- a/dspace-api/src/main/java/org/dspace/content/crosswalk/METSRightsCrosswalk.java +++ b/dspace-api/src/main/java/org/dspace/content/crosswalk/METSRightsCrosswalk.java @@ -17,9 +17,9 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import org.apache.commons.lang.ArrayUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.authorize.ResourcePolicy; import org.dspace.authorize.factory.AuthorizeServiceFactory; @@ -61,7 +61,7 @@ public class METSRightsCrosswalk /** * log4j category */ - private static Logger log = Logger.getLogger(METSRightsCrosswalk.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(METSRightsCrosswalk.class); private static final Namespace METSRights_NS = Namespace.getNamespace("rights", "http://cosimo.stanford.edu/sdr/metsrights/"); diff --git a/dspace-api/src/main/java/org/dspace/content/crosswalk/MODSDisseminationCrosswalk.java b/dspace-api/src/main/java/org/dspace/content/crosswalk/MODSDisseminationCrosswalk.java index 1258408493..ddf773dcec 100644 --- a/dspace-api/src/main/java/org/dspace/content/crosswalk/MODSDisseminationCrosswalk.java +++ b/dspace-api/src/main/java/org/dspace/content/crosswalk/MODSDisseminationCrosswalk.java @@ -20,8 +20,8 @@ import java.util.List; import java.util.Map; import java.util.Properties; -import org.apache.commons.lang.ArrayUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.ArrayUtils; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Collection; import org.dspace.content.Community; @@ -90,7 +90,7 @@ public class MODSDisseminationCrosswalk extends SelfNamedPlugin /** * log4j category */ - private static Logger log = Logger.getLogger(MODSDisseminationCrosswalk.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(MODSDisseminationCrosswalk.class); private static final String CONFIG_PREFIX = "crosswalk.mods.properties."; diff --git a/dspace-api/src/main/java/org/dspace/content/crosswalk/NullIngestionCrosswalk.java b/dspace-api/src/main/java/org/dspace/content/crosswalk/NullIngestionCrosswalk.java index f5cffdba15..994e15601d 100644 --- a/dspace-api/src/main/java/org/dspace/content/crosswalk/NullIngestionCrosswalk.java +++ b/dspace-api/src/main/java/org/dspace/content/crosswalk/NullIngestionCrosswalk.java @@ -11,7 +11,7 @@ import java.io.IOException; import java.sql.SQLException; import java.util.List; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.DSpaceObject; import org.dspace.core.Context; @@ -43,7 +43,7 @@ public class NullIngestionCrosswalk /** * log4j category */ - private static Logger log = Logger.getLogger(NullIngestionCrosswalk.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(NullIngestionCrosswalk.class); private static XMLOutputter outputPretty = new XMLOutputter(Format.getPrettyFormat()); diff --git a/dspace-api/src/main/java/org/dspace/content/crosswalk/OAIDCIngestionCrosswalk.java b/dspace-api/src/main/java/org/dspace/content/crosswalk/OAIDCIngestionCrosswalk.java index 98b4df7d8c..10bd5ce6fa 100644 --- a/dspace-api/src/main/java/org/dspace/content/crosswalk/OAIDCIngestionCrosswalk.java +++ b/dspace-api/src/main/java/org/dspace/content/crosswalk/OAIDCIngestionCrosswalk.java @@ -15,7 +15,7 @@ import org.dspace.authorize.AuthorizeException; import org.dspace.content.DSpaceObject; import org.dspace.content.Item; import org.dspace.content.MetadataField; -import org.dspace.content.MetadataSchema; +import org.dspace.content.MetadataSchemaEnum; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.ItemService; import org.dspace.core.Constants; @@ -67,7 +67,8 @@ public class OAIDCIngestionCrosswalk lang = element.getAttributeValue("lang"); } MetadataField metadataField = metadataValidator - .checkMetadata(context, MetadataSchema.DC_SCHEMA, element.getName(), null, createMissingMetadataFields); + .checkMetadata(context, MetadataSchemaEnum.DC.getName(), + element.getName(), null, createMissingMetadataFields); itemService.addMetadata(context, item, metadataField, lang, element.getText()); } diff --git a/dspace-api/src/main/java/org/dspace/content/crosswalk/OREDisseminationCrosswalk.java b/dspace-api/src/main/java/org/dspace/content/crosswalk/OREDisseminationCrosswalk.java index aad95da99a..f0e20cfffc 100644 --- a/dspace-api/src/main/java/org/dspace/content/crosswalk/OREDisseminationCrosswalk.java +++ b/dspace-api/src/main/java/org/dspace/content/crosswalk/OREDisseminationCrosswalk.java @@ -16,13 +16,13 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -import org.apache.commons.lang.ArrayUtils; +import org.apache.commons.lang3.ArrayUtils; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Bitstream; import org.dspace.content.Bundle; import org.dspace.content.DSpaceObject; import org.dspace.content.Item; -import org.dspace.content.MetadataSchema; +import org.dspace.content.MetadataSchemaEnum; import org.dspace.content.MetadataValue; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.ItemService; @@ -122,7 +122,7 @@ public class OREDisseminationCrosswalk Element aggLink; List uris = itemService - .getMetadata(item, MetadataSchema.DC_SCHEMA, "identifier", "uri", Item.ANY); + .getMetadata(item, MetadataSchemaEnum.DC.getName(), "identifier", "uri", Item.ANY); for (MetadataValue uri : uris) { aggLink = new Element("link", ATOM_NS); aggLink.setAttribute("rel", "alternate"); @@ -159,7 +159,8 @@ public class OREDisseminationCrosswalk // Information about the aggregation (item) itself Element aggTitle = new Element("title", ATOM_NS); - List titles = itemService.getMetadata(item, MetadataSchema.DC_SCHEMA, "title", null, Item.ANY); + List titles = itemService.getMetadata(item, MetadataSchemaEnum.DC.getName(), + "title", null, Item.ANY); if (titles != null && titles.size() > 0) { aggTitle.addContent(titles.get(0).getValue()); } else { @@ -170,7 +171,7 @@ public class OREDisseminationCrosswalk Element aggAuthor; Element aggAuthorName; List authors = itemService - .getMetadata(item, MetadataSchema.DC_SCHEMA, "contributor", "author", Item.ANY); + .getMetadata(item, MetadataSchemaEnum.DC.getName(), "contributor", "author", Item.ANY); for (MetadataValue author : authors) { aggAuthor = new Element("author", ATOM_NS); aggAuthorName = new Element("name", ATOM_NS); diff --git a/dspace-api/src/main/java/org/dspace/content/crosswalk/OREIngestionCrosswalk.java b/dspace-api/src/main/java/org/dspace/content/crosswalk/OREIngestionCrosswalk.java index 98a54ff624..6d7c716189 100644 --- a/dspace-api/src/main/java/org/dspace/content/crosswalk/OREIngestionCrosswalk.java +++ b/dspace-api/src/main/java/org/dspace/content/crosswalk/OREIngestionCrosswalk.java @@ -20,7 +20,7 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Bitstream; import org.dspace.content.BitstreamFormat; @@ -54,7 +54,7 @@ public class OREIngestionCrosswalk /** * log4j category */ - private static Logger log = Logger.getLogger(OREDisseminationCrosswalk.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(OREDisseminationCrosswalk.class); /* Namespaces */ public static final Namespace ATOM_NS = diff --git a/dspace-api/src/main/java/org/dspace/content/crosswalk/PREMISCrosswalk.java b/dspace-api/src/main/java/org/dspace/content/crosswalk/PREMISCrosswalk.java index 0f3aa991cd..9f927244c9 100644 --- a/dspace-api/src/main/java/org/dspace/content/crosswalk/PREMISCrosswalk.java +++ b/dspace-api/src/main/java/org/dspace/content/crosswalk/PREMISCrosswalk.java @@ -13,9 +13,9 @@ import java.sql.SQLException; import java.util.ArrayList; import java.util.List; -import org.apache.commons.lang.ArrayUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Bitstream; import org.dspace.content.BitstreamFormat; @@ -48,7 +48,7 @@ public class PREMISCrosswalk /** * log4j category */ - private static Logger log = Logger.getLogger(PREMISCrosswalk.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(PREMISCrosswalk.class); private static final Namespace PREMIS_NS = Namespace.getNamespace("premis", "http://www.loc.gov/standards/premis"); diff --git a/dspace-api/src/main/java/org/dspace/content/crosswalk/QDCCrosswalk.java b/dspace-api/src/main/java/org/dspace/content/crosswalk/QDCCrosswalk.java index a20699bf1a..edb3c27bef 100644 --- a/dspace-api/src/main/java/org/dspace/content/crosswalk/QDCCrosswalk.java +++ b/dspace-api/src/main/java/org/dspace/content/crosswalk/QDCCrosswalk.java @@ -19,13 +19,14 @@ import java.util.List; import java.util.Map; import java.util.Properties; -import org.apache.commons.lang.ArrayUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.ArrayUtils; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.DSpaceObject; import org.dspace.content.Item; import org.dspace.content.MetadataField; import org.dspace.content.MetadataSchema; +import org.dspace.content.MetadataSchemaEnum; import org.dspace.content.MetadataValue; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.ItemService; @@ -97,7 +98,7 @@ public class QDCCrosswalk extends SelfNamedPlugin /** * log4j category */ - private static Logger log = Logger.getLogger(QDCCrosswalk.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(QDCCrosswalk.class); // map of qdc to JDOM Element private Map qdc2element = new HashMap(); @@ -353,7 +354,7 @@ public class QDCCrosswalk extends SelfNamedPlugin // only complain about missing elements in the DC schema: if (elt == null) { - if (metadataField.getMetadataSchema().getName().equals(MetadataSchema.DC_SCHEMA)) { + if (metadataField.getMetadataSchema().getName().equals(MetadataSchemaEnum.DC.getName())) { log.warn("WARNING: " + myName + ": No QDC mapping for \"" + qdc + "\""); } } else { diff --git a/dspace-api/src/main/java/org/dspace/content/crosswalk/SimpleDCDisseminationCrosswalk.java b/dspace-api/src/main/java/org/dspace/content/crosswalk/SimpleDCDisseminationCrosswalk.java index 789fa9d6fb..22ec68070a 100644 --- a/dspace-api/src/main/java/org/dspace/content/crosswalk/SimpleDCDisseminationCrosswalk.java +++ b/dspace-api/src/main/java/org/dspace/content/crosswalk/SimpleDCDisseminationCrosswalk.java @@ -12,12 +12,12 @@ import java.sql.SQLException; import java.util.ArrayList; import java.util.List; -import org.apache.commons.lang.ArrayUtils; +import org.apache.commons.lang3.ArrayUtils; import org.dspace.authorize.AuthorizeException; import org.dspace.content.DSpaceObject; import org.dspace.content.Item; import org.dspace.content.MetadataField; -import org.dspace.content.MetadataSchema; +import org.dspace.content.MetadataSchemaEnum; import org.dspace.content.MetadataValue; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.ItemService; @@ -101,7 +101,7 @@ public class SimpleDCDisseminationCrosswalk extends SelfNamedPlugin Item item = (Item) dso; List allDC = itemService - .getMetadata(item, MetadataSchema.DC_SCHEMA, Item.ANY, Item.ANY, Item.ANY); + .getMetadata(item, MetadataSchemaEnum.DC.getName(), Item.ANY, Item.ANY, Item.ANY); List dcl = new ArrayList(allDC.size()); diff --git a/dspace-api/src/main/java/org/dspace/content/crosswalk/XHTMLHeadDisseminationCrosswalk.java b/dspace-api/src/main/java/org/dspace/content/crosswalk/XHTMLHeadDisseminationCrosswalk.java index c16a78f376..bc153e9426 100644 --- a/dspace-api/src/main/java/org/dspace/content/crosswalk/XHTMLHeadDisseminationCrosswalk.java +++ b/dspace-api/src/main/java/org/dspace/content/crosswalk/XHTMLHeadDisseminationCrosswalk.java @@ -19,7 +19,8 @@ import java.util.List; import java.util.Map; import java.util.Properties; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.DSpaceObject; import org.dspace.content.Item; @@ -65,8 +66,7 @@ public class XHTMLHeadDisseminationCrosswalk extends SelfNamedPlugin implements /** * log4j logger */ - private static Logger log = Logger - .getLogger(XHTMLHeadDisseminationCrosswalk.class); + private static Logger log = LogManager.getLogger(XHTMLHeadDisseminationCrosswalk.class); /** * Location of config file diff --git a/dspace-api/src/main/java/org/dspace/content/crosswalk/XSLTDisseminationCrosswalk.java b/dspace-api/src/main/java/org/dspace/content/crosswalk/XSLTDisseminationCrosswalk.java index 9e505ed87a..a64fd47623 100644 --- a/dspace-api/src/main/java/org/dspace/content/crosswalk/XSLTDisseminationCrosswalk.java +++ b/dspace-api/src/main/java/org/dspace/content/crosswalk/XSLTDisseminationCrosswalk.java @@ -22,7 +22,7 @@ import java.util.Map; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; -import org.apache.commons.lang.ArrayUtils; +import org.apache.commons.lang3.ArrayUtils; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Collection; import org.dspace.content.Community; diff --git a/dspace-api/src/main/java/org/dspace/content/crosswalk/XSLTIngestionCrosswalk.java b/dspace-api/src/main/java/org/dspace/content/crosswalk/XSLTIngestionCrosswalk.java index de479a4647..3a5122b2de 100644 --- a/dspace-api/src/main/java/org/dspace/content/crosswalk/XSLTIngestionCrosswalk.java +++ b/dspace-api/src/main/java/org/dspace/content/crosswalk/XSLTIngestionCrosswalk.java @@ -15,8 +15,8 @@ import java.util.List; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; -import org.apache.commons.lang.ArrayUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.ArrayUtils; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Collection; import org.dspace.content.Community; @@ -55,7 +55,7 @@ public class XSLTIngestionCrosswalk /** * log4j category */ - private static final Logger log = Logger.getLogger(XSLTIngestionCrosswalk.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(XSLTIngestionCrosswalk.class); private static final String DIRECTION = "submission"; diff --git a/dspace-api/src/main/java/org/dspace/content/dao/RelationshipTypeDAO.java b/dspace-api/src/main/java/org/dspace/content/dao/RelationshipTypeDAO.java index 24abb4724b..f03037f8bc 100644 --- a/dspace-api/src/main/java/org/dspace/content/dao/RelationshipTypeDAO.java +++ b/dspace-api/src/main/java/org/dspace/content/dao/RelationshipTypeDAO.java @@ -37,6 +37,15 @@ public interface RelationshipTypeDAO extends GenericDAO { RelationshipType findbyTypesAndLabels(Context context, EntityType leftType,EntityType rightType,String leftLabel,String rightLabel) throws SQLException; + + /** + * This method will query the Database for a list of RelationshipType objects that have the given label + * either as a left or right label in its attributes + * @param context The relevant DSpace context + * @param label The label that the RelationshipType must have as a leftLabel or rightLabel attribute + * @return The list of RelationshipType objects that fit the criteria + * @throws SQLException If something goes wrong + */ List findByLeftOrRightLabel(Context context, String label) throws SQLException; } diff --git a/dspace-api/src/main/java/org/dspace/content/dao/impl/ItemDAOImpl.java b/dspace-api/src/main/java/org/dspace/content/dao/impl/ItemDAOImpl.java index 67644ee7b4..025dab66e4 100644 --- a/dspace-api/src/main/java/org/dspace/content/dao/impl/ItemDAOImpl.java +++ b/dspace-api/src/main/java/org/dspace/content/dao/impl/ItemDAOImpl.java @@ -16,7 +16,7 @@ import java.util.UUID; import javax.persistence.Query; import javax.persistence.TemporalType; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.Collection; import org.dspace.content.Item; import org.dspace.content.MetadataField; @@ -42,7 +42,7 @@ import org.hibernate.type.StandardBasicTypes; * @author kevinvandevelde at atmire.com */ public class ItemDAOImpl extends AbstractHibernateDSODAO implements ItemDAO { - private static final Logger log = Logger.getLogger(ItemDAOImpl.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(ItemDAOImpl.class); protected ItemDAOImpl() { super(); diff --git a/dspace-api/src/main/java/org/dspace/content/dao/impl/MetadataFieldDAOImpl.java b/dspace-api/src/main/java/org/dspace/content/dao/impl/MetadataFieldDAOImpl.java index de517765ba..c53ea0c9a7 100644 --- a/dspace-api/src/main/java/org/dspace/content/dao/impl/MetadataFieldDAOImpl.java +++ b/dspace-api/src/main/java/org/dspace/content/dao/impl/MetadataFieldDAOImpl.java @@ -16,7 +16,7 @@ import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Join; import javax.persistence.criteria.Root; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.dspace.content.MetadataField; import org.dspace.content.MetadataField_; import org.dspace.content.MetadataSchema; diff --git a/dspace-api/src/main/java/org/dspace/content/dao/impl/RelationshipTypeDAOImpl.java b/dspace-api/src/main/java/org/dspace/content/dao/impl/RelationshipTypeDAOImpl.java index 8fe5d18c56..5d311eabb5 100644 --- a/dspace-api/src/main/java/org/dspace/content/dao/impl/RelationshipTypeDAOImpl.java +++ b/dspace-api/src/main/java/org/dspace/content/dao/impl/RelationshipTypeDAOImpl.java @@ -38,6 +38,7 @@ public class RelationshipTypeDAOImpl extends AbstractHibernateDAO findByLeftOrRightLabel(Context context, String label) throws SQLException { CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context); CriteriaQuery criteriaQuery = getCriteriaQuery(criteriaBuilder, RelationshipType.class); diff --git a/dspace-api/src/main/java/org/dspace/content/packager/AbstractMETSDisseminator.java b/dspace-api/src/main/java/org/dspace/content/packager/AbstractMETSDisseminator.java index 77de1ef12e..f32990ea5b 100644 --- a/dspace-api/src/main/java/org/dspace/content/packager/AbstractMETSDisseminator.java +++ b/dspace-api/src/main/java/org/dspace/content/packager/AbstractMETSDisseminator.java @@ -85,8 +85,6 @@ import org.jdom.Element; import org.jdom.Namespace; import org.jdom.output.Format; import org.jdom.output.XMLOutputter; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * Base class for disseminator of @@ -125,7 +123,8 @@ public abstract class AbstractMETSDisseminator /** * log4j category */ - private static final Logger log = LoggerFactory.getLogger(AbstractMETSDisseminator.class); + private static org.apache.logging.log4j.Logger log = + org.apache.logging.log4j.LogManager.getLogger(AbstractMETSDisseminator.class); // JDOM xml output writer - indented format for readability. protected static XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat()); diff --git a/dspace-api/src/main/java/org/dspace/content/packager/AbstractMETSIngester.java b/dspace-api/src/main/java/org/dspace/content/packager/AbstractMETSIngester.java index 5ecaa5c09c..9cf6a7ca9f 100644 --- a/dspace-api/src/main/java/org/dspace/content/packager/AbstractMETSIngester.java +++ b/dspace-api/src/main/java/org/dspace/content/packager/AbstractMETSIngester.java @@ -20,7 +20,7 @@ import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import org.apache.commons.collections4.CollectionUtils; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Bitstream; import org.dspace.content.BitstreamFormat; @@ -109,7 +109,7 @@ public abstract class AbstractMETSIngester extends AbstractPackageIngester { /** * log4j category */ - private static Logger log = Logger.getLogger(AbstractMETSIngester.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(AbstractMETSIngester.class); protected final BitstreamService bitstreamService = ContentServiceFactory.getInstance().getBitstreamService(); protected final BitstreamFormatService bitstreamFormatService = ContentServiceFactory.getInstance() diff --git a/dspace-api/src/main/java/org/dspace/content/packager/AbstractPackageIngester.java b/dspace-api/src/main/java/org/dspace/content/packager/AbstractPackageIngester.java index a9e8b9a509..da58f1cf0b 100644 --- a/dspace-api/src/main/java/org/dspace/content/packager/AbstractPackageIngester.java +++ b/dspace-api/src/main/java/org/dspace/content/packager/AbstractPackageIngester.java @@ -16,7 +16,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Collection; import org.dspace.content.DSpaceObject; @@ -59,7 +59,7 @@ public abstract class AbstractPackageIngester /** * log4j category */ - private static Logger log = Logger.getLogger(AbstractPackageIngester.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(AbstractPackageIngester.class); protected final CollectionService collectionService = ContentServiceFactory.getInstance().getCollectionService(); protected final ItemService itemService = ContentServiceFactory.getInstance().getItemService(); diff --git a/dspace-api/src/main/java/org/dspace/content/packager/DSpaceAIPDisseminator.java b/dspace-api/src/main/java/org/dspace/content/packager/DSpaceAIPDisseminator.java index 2fb65dc1bb..887520ad66 100644 --- a/dspace-api/src/main/java/org/dspace/content/packager/DSpaceAIPDisseminator.java +++ b/dspace-api/src/main/java/org/dspace/content/packager/DSpaceAIPDisseminator.java @@ -28,8 +28,8 @@ import edu.harvard.hul.ois.mets.Type; import edu.harvard.hul.ois.mets.helper.MetsException; import edu.harvard.hul.ois.mets.helper.PCData; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang.ArrayUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.ArrayUtils; +import org.apache.logging.log4j.Logger; import org.dspace.app.util.Util; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Bundle; @@ -82,7 +82,7 @@ import org.dspace.services.factory.DSpaceServicesFactory; * @see AbstractPackageDisseminator */ public class DSpaceAIPDisseminator extends AbstractMETSDisseminator { - private static final Logger log = Logger.getLogger(DSpaceAIPDisseminator.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(DSpaceAIPDisseminator.class); /** * Unique identifier for the profile of the METS document. diff --git a/dspace-api/src/main/java/org/dspace/content/packager/DSpaceAIPIngester.java b/dspace-api/src/main/java/org/dspace/content/packager/DSpaceAIPIngester.java index e23ab5f0b4..954a68bfc1 100644 --- a/dspace-api/src/main/java/org/dspace/content/packager/DSpaceAIPIngester.java +++ b/dspace-api/src/main/java/org/dspace/content/packager/DSpaceAIPIngester.java @@ -10,7 +10,7 @@ package org.dspace.content.packager; import java.io.IOException; import java.sql.SQLException; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Bitstream; import org.dspace.content.Collection; @@ -64,7 +64,7 @@ public class DSpaceAIPIngester /** * log4j category */ - private static Logger log = Logger.getLogger(DSpaceAIPIngester.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(DSpaceAIPIngester.class); /** * Ensure it's an AIP generated by the complementary AIP disseminator. diff --git a/dspace-api/src/main/java/org/dspace/content/packager/METSManifest.java b/dspace-api/src/main/java/org/dspace/content/packager/METSManifest.java index d9d860d04e..53a8678df2 100644 --- a/dspace-api/src/main/java/org/dspace/content/packager/METSManifest.java +++ b/dspace-api/src/main/java/org/dspace/content/packager/METSManifest.java @@ -18,7 +18,7 @@ import java.util.Iterator; import java.util.List; import org.apache.commons.codec.binary.Base64; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Bitstream; import org.dspace.content.Bundle; @@ -117,7 +117,7 @@ public class METSManifest { /** * log4j category */ - private static final Logger log = Logger.getLogger(METSManifest.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(METSManifest.class); /** * Canonical filename of METS manifest within a package or as a bitstream. diff --git a/dspace-api/src/main/java/org/dspace/content/packager/PDFPackager.java b/dspace-api/src/main/java/org/dspace/content/packager/PDFPackager.java index 0b26cc867b..c6036d2261 100644 --- a/dspace-api/src/main/java/org/dspace/content/packager/PDFPackager.java +++ b/dspace-api/src/main/java/org/dspace/content/packager/PDFPackager.java @@ -16,8 +16,8 @@ import java.sql.SQLException; import java.util.Calendar; import java.util.List; -import org.apache.commons.lang.ArrayUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.ArrayUtils; +import org.apache.logging.log4j.Logger; import org.apache.pdfbox.cos.COSDocument; import org.apache.pdfbox.io.MemoryUsageSetting; import org.apache.pdfbox.io.RandomAccessBufferedFileInputStream; @@ -33,7 +33,7 @@ import org.dspace.content.Collection; import org.dspace.content.DCDate; import org.dspace.content.DSpaceObject; import org.dspace.content.Item; -import org.dspace.content.MetadataSchema; +import org.dspace.content.MetadataSchemaEnum; import org.dspace.content.WorkspaceItem; import org.dspace.content.crosswalk.CrosswalkException; import org.dspace.content.crosswalk.MetadataValidationException; @@ -73,7 +73,7 @@ public class PDFPackager /** * log4j category */ - private static final Logger log = Logger.getLogger(PDFPackager.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(PDFPackager.class); protected static final String BITSTREAM_FORMAT_NAME = "Adobe PDF"; @@ -377,10 +377,11 @@ public class PDFPackager if (log.isDebugEnabled()) { log.debug("PDF Info dict title=\"" + title + "\""); } - itemService.addMetadata(context, item, MetadataSchema.DC_SCHEMA, "title", null, "en", title); + itemService.addMetadata(context, item, MetadataSchemaEnum.DC.getName(), "title", null, "en", title); String value = docinfo.getAuthor(); if (value != null) { - itemService.addMetadata(context, item, MetadataSchema.DC_SCHEMA, "contributor", "author", null, value); + itemService.addMetadata(context, item, MetadataSchemaEnum.DC.getName(), + "contributor", "author", null, value); if (log.isDebugEnabled()) { log.debug("PDF Info dict author=\"" + value + "\""); } @@ -388,25 +389,29 @@ public class PDFPackager value = docinfo.getCreator(); if (value != null) { - itemService.addMetadata(context, item, MetadataSchema.DC_SCHEMA, "description", "provenance", "en", + itemService.addMetadata(context, item, MetadataSchemaEnum.DC.getName(), + "description", "provenance", "en", "Application that created the original document: " + value); } value = docinfo.getProducer(); if (value != null) { - itemService.addMetadata(context, item, MetadataSchema.DC_SCHEMA, "description", "provenance", "en", + itemService.addMetadata(context, item, MetadataSchemaEnum.DC.getName(), + "description", "provenance", "en", "Original document converted to PDF by: " + value); } value = docinfo.getSubject(); if (value != null) { itemService - .addMetadata(context, item, MetadataSchema.DC_SCHEMA, "description", "abstract", null, value); + .addMetadata(context, item, MetadataSchemaEnum.DC.getName(), + "description", "abstract", null, value); } value = docinfo.getKeywords(); if (value != null) { - itemService.addMetadata(context, item, MetadataSchema.DC_SCHEMA, "subject", "other", null, value); + itemService.addMetadata(context, item, MetadataSchemaEnum.DC.getName(), + "subject", "other", null, value); } // Take either CreationDate or ModDate as "date.created", @@ -417,7 +422,7 @@ public class PDFPackager } if (calValue != null) { - itemService.addMetadata(context, item, MetadataSchema.DC_SCHEMA, "date", "created", null, + itemService.addMetadata(context, item, MetadataSchemaEnum.DC.getName(), "date", "created", null, (new DCDate(calValue.getTime())).toString()); } itemService.update(context, item); diff --git a/dspace-api/src/main/java/org/dspace/content/packager/PackageException.java b/dspace-api/src/main/java/org/dspace/content/packager/PackageException.java index 3da64df783..58f2621afb 100644 --- a/dspace-api/src/main/java/org/dspace/content/packager/PackageException.java +++ b/dspace-api/src/main/java/org/dspace/content/packager/PackageException.java @@ -10,7 +10,7 @@ package org.dspace.content.packager; import java.io.PrintWriter; import java.io.StringWriter; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; /** * This is a superclass for exceptions representing a failure when diff --git a/dspace-api/src/main/java/org/dspace/content/packager/PackageUtils.java b/dspace-api/src/main/java/org/dspace/content/packager/PackageUtils.java index 045f7963d0..1fde79d71d 100644 --- a/dspace-api/src/main/java/org/dspace/content/packager/PackageUtils.java +++ b/dspace-api/src/main/java/org/dspace/content/packager/PackageUtils.java @@ -21,7 +21,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.commons.collections4.CollectionUtils; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Bitstream; import org.dspace.content.BitstreamFormat; @@ -30,7 +30,7 @@ import org.dspace.content.Collection; import org.dspace.content.Community; import org.dspace.content.DSpaceObject; import org.dspace.content.Item; -import org.dspace.content.MetadataSchema; +import org.dspace.content.MetadataSchemaEnum; import org.dspace.content.MetadataValue; import org.dspace.content.WorkspaceItem; import org.dspace.content.factory.ContentServiceFactory; @@ -65,7 +65,7 @@ public class PackageUtils { /** * log4j category */ - private static final Logger log = Logger.getLogger(PackageUtils.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(PackageUtils.class); // Map of metadata elements for Communities and Collections // Format is alternating key/value in a straight array; use this @@ -158,7 +158,7 @@ public class PackageUtils { */ public static void checkItemMetadata(Item item) throws PackageValidationException { - List t = itemService.getMetadata(item, MetadataSchema.DC_SCHEMA, "title", null, Item.ANY); + List t = itemService.getMetadata(item, MetadataSchemaEnum.DC.getName(), "title", null, Item.ANY); if (t == null || t.size() == 0) { throw new PackageValidationException("Item cannot be created without the required \"title\" DC metadata."); } diff --git a/dspace-api/src/main/java/org/dspace/content/packager/RoleDisseminator.java b/dspace-api/src/main/java/org/dspace/content/packager/RoleDisseminator.java index 5fc538e086..75bc512996 100644 --- a/dspace-api/src/main/java/org/dspace/content/packager/RoleDisseminator.java +++ b/dspace-api/src/main/java/org/dspace/content/packager/RoleDisseminator.java @@ -21,7 +21,7 @@ import javax.xml.stream.XMLOutputFactory; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamWriter; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Collection; import org.dspace.content.Community; @@ -47,7 +47,7 @@ public class RoleDisseminator implements PackageDisseminator { /** * log4j category */ - private static final Logger log = Logger.getLogger(RoleDisseminator.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(RoleDisseminator.class); /** * DSpace Roles XML Namespace in JDOM form. diff --git a/dspace-api/src/main/java/org/dspace/content/service/ItemService.java b/dspace-api/src/main/java/org/dspace/content/service/ItemService.java index e81faaeaa8..8f0324a39d 100644 --- a/dspace-api/src/main/java/org/dspace/content/service/ItemService.java +++ b/dspace-api/src/main/java/org/dspace/content/service/ItemService.java @@ -646,8 +646,11 @@ public interface ItemService extends DSpaceObjectService, DSpaceObjectLega * This method retrieves a list of MetadataValue objects that get constructed from processing * the given Item's Relationships through the config given to the {@link VirtualMetadataPopulator} * @param item The Item that will be processed through it's Relationships + * @param enableVirtualMetadata This parameter will determine whether the list of Relationship metadata + * should be populated with metadata that is being generated through the + * VirtualMetadataPopulator functionality or not * @return The list of MetadataValue objects constructed through the Relationships */ - public List getRelationshipMetadata(Item item, boolean extra); + public List getRelationshipMetadata(Item item, boolean enableVirtualMetadata); } diff --git a/dspace-api/src/main/java/org/dspace/content/service/RelationshipService.java b/dspace-api/src/main/java/org/dspace/content/service/RelationshipService.java index edfa433d03..21c4888e4d 100644 --- a/dspace-api/src/main/java/org/dspace/content/service/RelationshipService.java +++ b/dspace-api/src/main/java/org/dspace/content/service/RelationshipService.java @@ -73,6 +73,17 @@ public interface RelationshipService extends DSpaceCRUDService { */ int findRightPlaceByRightItem(Context context, Item item) throws SQLException; + /** + * This method will retrieve a list of Relationship objects by retrieving the list of Relationship objects + * for the given item and then filtering the Relationship objects on the RelationshipType object that is + * passed along to this method. + * @param context The relevant DSpace context + * @param item The Item for which the list of Relationship objects will be retrieved + * @param relationshipType The RelationshipType object on which the list of Relationship objects for the given + * Item will be filtered + * @return The list of Relationship objects for the given Item filtered on the RelationshipType object + * @throws SQLException If something goes wrong + */ public List findByItemAndRelationshipType(Context context, Item item, RelationshipType relationshipType) throws SQLException; diff --git a/dspace-api/src/main/java/org/dspace/content/virtual/Collected.java b/dspace-api/src/main/java/org/dspace/content/virtual/Collected.java new file mode 100644 index 0000000000..e064924acf --- /dev/null +++ b/dspace-api/src/main/java/org/dspace/content/virtual/Collected.java @@ -0,0 +1,102 @@ +/** + * The contents of this file are subject to the license and copyright + * detailed in the LICENSE and NOTICE files at the root of the source + * tree and available online at + * + * http://www.dspace.org/license/ + */ +package org.dspace.content.virtual; + +import java.util.LinkedList; +import java.util.List; + +import org.apache.commons.lang3.StringUtils; +import org.dspace.content.Item; +import org.dspace.content.MetadataValue; +import org.dspace.content.service.ItemService; +import org.dspace.core.Context; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * A bean implementing the {@link VirtualBean} interface to achieve the generation of Virtual metadata + * The Collected bean will take all the values of each metadata field defined in the list and it'll + * create a list of virtual metadata fields defined by the map in which it's defined. + * All values from the metadata fields will returned as separate elements + */ +public class Collected implements VirtualBean { + + @Autowired + private ItemService itemService; + + /** + * The boolean value indicating whether this field should be used for place or not + */ + private boolean useForPlace; + /** + * The fields for which the metadata will be retrieved + */ + private List fields; + + /** + * Generic getter for the fields property + * @return The list of fields to be used in this bean + */ + public List getFields() { + return fields; + } + + /** + * Generic setter for the fields property + * @param fields the list of fields to which the fields property will be set to + */ + public void setFields(List fields) { + this.fields = fields; + } + /** + * Generic setter for the useForPlace property + * @param useForPlace The boolean value that the useForPlace property will be set to + */ + public void setUseForPlace(boolean useForPlace) { + this.useForPlace = useForPlace; + } + + /** + * Generic getter for the useForPlace property + * @return The useForPlace to be used by this bean + */ + public boolean getUseForPlace() { + return useForPlace; + } + + /** + * this method will retrieve the metadata values from the given item for all the metadata fields listed + * in the fields property and it'll return all those values as a list + * @param context The relevant DSpace context + * @param item The item that will be used to either retrieve metadata values from + * @return The String values for all of the retrieved metadatavalues + */ + public List getValues(Context context, Item item) { + List resultValues = new LinkedList<>(); + List value = this.getFields(); + for (String s : value) { + String[] splittedString = s.split("\\."); + + List resultList = itemService.getMetadata(item, + splittedString.length > 0 ? splittedString[0] : + null, + splittedString.length > 1 ? splittedString[1] : + null, + splittedString.length > 2 ? splittedString[2] : + null, + Item.ANY); + + for (MetadataValue metadataValue : resultList) { + if (StringUtils.isNotBlank(metadataValue.getValue())) { + resultValues.add(metadataValue.getValue()); + } + } + } + + return resultValues; + } +} diff --git a/dspace-api/src/main/java/org/dspace/content/virtual/Concatenate.java b/dspace-api/src/main/java/org/dspace/content/virtual/Concatenate.java index 6016de52e9..eef5f9da61 100644 --- a/dspace-api/src/main/java/org/dspace/content/virtual/Concatenate.java +++ b/dspace-api/src/main/java/org/dspace/content/virtual/Concatenate.java @@ -10,7 +10,7 @@ package org.dspace.content.virtual; import java.util.LinkedList; import java.util.List; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.dspace.content.Item; import org.dspace.content.MetadataValue; import org.dspace.content.service.ItemService; @@ -19,6 +19,10 @@ import org.springframework.beans.factory.annotation.Autowired; /** * A bean implementing the {@link VirtualBean} interface to achieve the generation of Virtual metadata + * The Concatenate bean will take all the values of each metadata field configured in the list + * and it will join all of these together with the separator defined in this bean. This means that whichever + * entry this bean belongs to, that metadata field will have the value of the related item's metadata values + * joined together with this separator. Only one value will be returned */ public class Concatenate implements VirtualBean { @@ -30,7 +34,7 @@ public class Concatenate implements VirtualBean { */ private List fields; /** - * The seperator that will be used to concatenate the values retrieved from the above mentioned fields + * The separator that will be used to concatenate the values retrieved from the above mentioned fields */ private String separator; @@ -89,13 +93,13 @@ public class Concatenate implements VirtualBean { /** * this method will retrieve the metadata values from the given item for all the metadata fields listed - * in the fields property and it'll concatenate all those values together with the seperrator specified + * in the fields property and it'll concatenate all those values together with the separator specified * in this class * @param context The relevant DSpace context * @param item The item that will be used to either retrieve metadata values from - * @return The String value for all of the retrieved metadatavalues combined with the seperator + * @return The String value for all of the retrieved metadatavalues combined with the separator */ - public String getValue(Context context, Item item) { + public List getValues(Context context, Item item) { List resultValues = new LinkedList<>(); List value = this.getFields(); @@ -127,8 +131,9 @@ public class Concatenate implements VirtualBean { } String result = StringUtils.join(resultValues, this.getSeparator()); - - return result; + List listToReturn = new LinkedList<>(); + listToReturn.add(result); + return listToReturn; } } diff --git a/dspace-api/src/main/java/org/dspace/content/virtual/Related.java b/dspace-api/src/main/java/org/dspace/content/virtual/Related.java index 8388ac2185..06d7c8ac3a 100644 --- a/dspace-api/src/main/java/org/dspace/content/virtual/Related.java +++ b/dspace-api/src/main/java/org/dspace/content/virtual/Related.java @@ -11,7 +11,7 @@ import java.sql.SQLException; import java.util.LinkedList; import java.util.List; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.dspace.content.Entity; import org.dspace.content.EntityType; import org.dspace.content.Item; @@ -27,6 +27,12 @@ import org.springframework.beans.factory.annotation.Autowired; /** * A bean implementing the {@link VirtualBean} interface to achieve the generation of Virtual metadata * by traversing the path of relation specified in the config for this bean + * The Related bean will find the relationshiptype defined in the relationshipTypeString property on + * the current item and it'll use the related item from that relationship to pass it along to the virtualBean + * property which in turn refers to another VirtualBean instance and it continues the chain until it reaches + * either a Concatenate or Collected bean to retrieve the values. It will then return that value through the chain + * again and it'll fill the values into the virtual metadata fields that are defined in the map for the first + * Related bean. */ public class Related implements VirtualBean { @@ -51,7 +57,7 @@ public class Related implements VirtualBean { */ private Integer place; /** - * The next bean to call its getValue() method on + * The next bean to call its getValues() method on */ private VirtualBean virtualBean; @@ -134,7 +140,7 @@ public class Related implements VirtualBean { * Will return null if no relationships are found * @throws SQLException If something goes wrong */ - public String getValue(Context context, Item item) throws SQLException { + public List getValues(Context context, Item item) throws SQLException { Entity entity = entityService.findByItemId(context, item.getID()); EntityType entityType = entityService.getType(context, entity); @@ -156,12 +162,12 @@ public class Related implements VirtualBean { if (relationship.getRelationshipType().getLeftType() == entityType) { if (relationship.getLeftPlace() == place) { Item otherItem = relationship.getRightItem(); - return virtualBean.getValue(context, otherItem); + return virtualBean.getValues(context, otherItem); } } else if (relationship.getRelationshipType().getRightType() == entityType) { if (relationship.getRightPlace() == place) { Item otherItem = relationship.getLeftItem(); - return virtualBean.getValue(context, otherItem); + return virtualBean.getValues(context, otherItem); } } } diff --git a/dspace-api/src/main/java/org/dspace/content/virtual/UUIDValue.java b/dspace-api/src/main/java/org/dspace/content/virtual/UUIDValue.java index be4e247ca8..52b83e47f3 100644 --- a/dspace-api/src/main/java/org/dspace/content/virtual/UUIDValue.java +++ b/dspace-api/src/main/java/org/dspace/content/virtual/UUIDValue.java @@ -8,6 +8,8 @@ package org.dspace.content.virtual; import java.sql.SQLException; +import java.util.LinkedList; +import java.util.List; import org.dspace.content.Item; import org.dspace.core.Context; @@ -24,7 +26,9 @@ public class UUIDValue implements VirtualBean { return useForPlace; } - public String getValue(Context context, Item item) throws SQLException { - return String.valueOf(item.getID()); + public List getValues(Context context, Item item) throws SQLException { + List list = new LinkedList<>(); + list.add(String.valueOf(item.getID())); + return list; } } diff --git a/dspace-api/src/main/java/org/dspace/content/virtual/VirtualBean.java b/dspace-api/src/main/java/org/dspace/content/virtual/VirtualBean.java index a57ee81fac..5fe08c43fe 100644 --- a/dspace-api/src/main/java/org/dspace/content/virtual/VirtualBean.java +++ b/dspace-api/src/main/java/org/dspace/content/virtual/VirtualBean.java @@ -8,6 +8,7 @@ package org.dspace.content.virtual; import java.sql.SQLException; +import java.util.List; import org.dspace.content.Item; import org.dspace.core.Context; @@ -20,18 +21,15 @@ import org.dspace.core.Context; public interface VirtualBean { /** - * This method will return the String value for the metadata field that is configured in the - * {@link Concatenate} bean in the config and it will traverse all the {@link Related} beans - * in the config that are chained together until it finds a {@link Concatenate} bean for which - * the value can be retrieved. + * This method will return a list filled with String values which will be determine by the bean that's responsible + * of handling the metadata fields when fully traversed through all the {@link Related} beans * @param context The relevant DSpace context * @param item The item that will be used to either retrieve metadata values from or to find * the related item through its relationships - * @return The String value of all the metadata values of all fields defined in {@link Concatenate} - * bean which will be concatenated with a seperator that's defined in the same bean + * @return The list of String values of all the metadata values as constructed by the responsible bean * @throws SQLException If something goes wrong */ - String getValue(Context context, Item item) throws SQLException; + List getValues(Context context, Item item) throws SQLException; /** * Generic setter for the useForPlace property diff --git a/dspace-api/src/main/java/org/dspace/core/ConfigurationManager.java b/dspace-api/src/main/java/org/dspace/core/ConfigurationManager.java index 30d6cf800a..8f2e92e2f0 100644 --- a/dspace-api/src/main/java/org/dspace/core/ConfigurationManager.java +++ b/dspace-api/src/main/java/org/dspace/core/ConfigurationManager.java @@ -10,9 +10,9 @@ package org.dspace.core; import java.util.Enumeration; import java.util.Properties; -import org.apache.commons.configuration.Configuration; -import org.apache.commons.configuration.ConfigurationConverter; -import org.apache.log4j.Logger; +import org.apache.commons.configuration2.Configuration; +import org.apache.commons.configuration2.ConfigurationConverter; +import org.apache.logging.log4j.Logger; import org.dspace.services.factory.DSpaceServicesFactory; /** @@ -36,7 +36,7 @@ public class ConfigurationManager { /** * log4j category */ - private static final Logger log = Logger.getLogger(ConfigurationManager.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(ConfigurationManager.class); protected ConfigurationManager() { diff --git a/dspace-api/src/main/java/org/dspace/core/Context.java b/dspace-api/src/main/java/org/dspace/core/Context.java index fac882c715..1771473c62 100644 --- a/dspace-api/src/main/java/org/dspace/core/Context.java +++ b/dspace-api/src/main/java/org/dspace/core/Context.java @@ -18,7 +18,7 @@ import java.util.Stack; import java.util.UUID; import java.util.concurrent.atomic.AtomicBoolean; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.ResourcePolicy; import org.dspace.content.DSpaceObject; import org.dspace.eperson.EPerson; @@ -50,7 +50,7 @@ import org.springframework.util.CollectionUtils; * @version $Revision$ */ public class Context implements AutoCloseable { - private static final Logger log = Logger.getLogger(Context.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(Context.class); protected static final AtomicBoolean databaseUpdated = new AtomicBoolean(false); /** diff --git a/dspace-api/src/main/java/org/dspace/core/Email.java b/dspace-api/src/main/java/org/dspace/core/Email.java index 0ce631e6b8..0fcf911a35 100644 --- a/dspace-api/src/main/java/org/dspace/core/Email.java +++ b/dspace-api/src/main/java/org/dspace/core/Email.java @@ -32,12 +32,14 @@ import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.Session; import javax.mail.Transport; +import javax.mail.internet.ContentType; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; +import javax.mail.internet.ParseException; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.services.ConfigurationService; import org.dspace.services.factory.DSpaceServicesFactory; @@ -103,7 +105,6 @@ import org.dspace.services.factory.DSpaceServicesFactory; * @author Robert Tansley * @author Jim Downing - added attachment handling code * @author Adan Roman Ruiz at arvo.es - added inputstream attachment handling code - * @version $Revision: 5844 $ */ public class Email { /** @@ -139,7 +140,7 @@ public class Email { */ private String charset; - private static final Logger log = Logger.getLogger(Email.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(Email.class); /** * Create a new email message. @@ -207,7 +208,25 @@ public class Email { attachments.add(new FileAttachment(f, name)); } + /** When given a bad MIME type for an attachment, use this instead. */ + private static final String DEFAULT_ATTACHMENT_TYPE = "application/octet-stream"; + public void addAttachment(InputStream is, String name, String mimetype) { + if (null == mimetype) { + log.error("Null MIME type replaced with '" + DEFAULT_ATTACHMENT_TYPE + + "' for attachment '" + name + "'"); + mimetype = DEFAULT_ATTACHMENT_TYPE; + } else { + try { + new ContentType(mimetype); // Just try to parse it. + } catch (ParseException ex) { + log.error("Bad MIME type '" + mimetype + + "' replaced with '" + DEFAULT_ATTACHMENT_TYPE + + "' for attachment '" + name + "'", ex); + mimetype = DEFAULT_ATTACHMENT_TYPE; + } + } + moreAttachments.add(new InputStreamAttachment(is, name, mimetype)); } diff --git a/dspace-api/src/main/java/org/dspace/core/I18nUtil.java b/dspace-api/src/main/java/org/dspace/core/I18nUtil.java index b8aeb959b4..37e48c4a4f 100644 --- a/dspace-api/src/main/java/org/dspace/core/I18nUtil.java +++ b/dspace-api/src/main/java/org/dspace/core/I18nUtil.java @@ -15,8 +15,8 @@ import java.util.MissingResourceException; import java.util.ResourceBundle; import java.util.StringTokenizer; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.eperson.EPerson; import org.dspace.services.ConfigurationService; import org.dspace.services.factory.DSpaceServicesFactory; @@ -35,7 +35,7 @@ import org.dspace.services.factory.DSpaceServicesFactory; */ public class I18nUtil { - private static final Logger log = Logger.getLogger(I18nUtil.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(I18nUtil.class); // the default Locale of this DSpace Instance public static final Locale DEFAULTLOCALE = getDefaultLocale(); diff --git a/dspace-api/src/main/java/org/dspace/core/LegacyPluginServiceImpl.java b/dspace-api/src/main/java/org/dspace/core/LegacyPluginServiceImpl.java index 477143a04a..366de8314b 100644 --- a/dspace-api/src/main/java/org/dspace/core/LegacyPluginServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/core/LegacyPluginServiceImpl.java @@ -18,7 +18,7 @@ import java.util.Iterator; import java.util.List; import java.util.Map; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.core.service.PluginService; import org.dspace.services.ConfigurationService; import org.springframework.beans.factory.annotation.Autowired; @@ -70,7 +70,7 @@ public class LegacyPluginServiceImpl implements PluginService { /** * log4j category */ - private static Logger log = Logger.getLogger(LegacyPluginServiceImpl.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(LegacyPluginServiceImpl.class); /** * Prefixes of names of properties to look for in DSpace Configuration diff --git a/dspace-api/src/main/java/org/dspace/core/LoggerServiceImpl.java b/dspace-api/src/main/java/org/dspace/core/LoggerServiceImpl.java deleted file mode 100644 index 47875d345a..0000000000 --- a/dspace-api/src/main/java/org/dspace/core/LoggerServiceImpl.java +++ /dev/null @@ -1,182 +0,0 @@ -/** - * The contents of this file are subject to the license and copyright - * detailed in the LICENSE and NOTICE files at the root of the source - * tree and available online at - * - * http://www.dspace.org/license/ - */ -package org.dspace.core; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.net.MalformedURLException; -import java.util.Enumeration; -import java.util.Properties; - -import org.apache.log4j.Logger; -import org.apache.log4j.PropertyConfigurator; -import org.apache.log4j.xml.DOMConfigurator; -import org.dspace.services.ConfigurationService; -import org.dspace.services.KernelStartupCallbackService; -import org.dspace.services.factory.DSpaceServicesFactory; - -/** - * Service which simply initializes DSpace logging *after* the kernel starts - * - * @author Tim Donohue - */ -public class LoggerServiceImpl implements KernelStartupCallbackService { - /** - * log4j category - */ - private static Logger log = Logger.getLogger(LoggerServiceImpl.class); - - // System property which will disable DSpace's log4j setup - private final String LOG_DISABLE_PROPERTY = "dspace.log.init.disable"; - - // Logging settings which are specified in DSpace's configuration - private final String LOG_CONFIG_PROPERTY = "log.init.config"; - - /** - * After kernel starts up, initialize Log4j based on the logging settings - * in our ConfigurationService. - */ - @Override - public void executeCallback() { - try { - /* - * Initialize Logging once ConfigurationManager is initialized. - * - * This is controlled by a property in dspace.cfg. If the property - * is absent then nothing will be configured and the application - * will use the defaults provided by log4j. - * - * Property format is: - * - * log.init.config = ${dspace.dir}/config/log4j.properties - * or - * log.init.config = ${dspace.dir}/config/log4j.xml - * - * See default log4j initialization documentation here: - * http://logging.apache.org/log4j/docs/manual.html - * - * If there is a problem with the file referred to in - * "log.configuration", it needs to be sent to System.err - * so do not instantiate another Logging configuration. - * - */ - ConfigurationService config = DSpaceServicesFactory.getInstance().getConfigurationService(); - String dsLogConfiguration = config.getProperty(LOG_CONFIG_PROPERTY); - - if (dsLogConfiguration == null || System.getProperty(LOG_DISABLE_PROPERTY) != null) { - /* - * Do nothing if log config not set in dspace.cfg or "dspace.log.init.disable" - * system property set. Leave it upto log4j to properly init its logging - * via classpath or system properties. - */ - info("Using default log4j provided log configuration." + - " If unintended, check your dspace.cfg for (" + LOG_CONFIG_PROPERTY + ")"); - } else { - info("Using dspace provided log configuration (" + LOG_CONFIG_PROPERTY + ")"); - - File logConfigFile = new File(dsLogConfiguration); - - if (logConfigFile.exists()) { - info("Loading: " + dsLogConfiguration); - - // Check if we have an XML config - if (logConfigFile.getName().endsWith(".xml")) { - // Configure log4j via the DOMConfigurator - DOMConfigurator.configure(logConfigFile.toURI().toURL()); - } else { - // Otherwise, assume a Properties file - - // Parse our log4j properties file - Properties log4jProps = new Properties(); - try (InputStream fis = new FileInputStream(logConfigFile)) { - log4jProps.load(fis); - } catch (IOException e) { - fatal("Can't load dspace provided log4j configuration from " + logConfigFile - .getAbsolutePath(), e); - } - - // Configure log4j based on all its properties - PropertyConfigurator.configure(log4jProps); - } - } else { - info("File does not exist: " + dsLogConfiguration); - } - } - - } catch (MalformedURLException e) { - fatal("Can't load dspace provided log4j configuration", e); - throw new IllegalStateException("Cannot load dspace provided log4j configuration", e); - } - } - - /** - * Attempt to log an INFO statement. If Log4j is not yet setup, send to System OUT - * - * @param string - */ - private void info(String string) { - if (!isLog4jConfigured()) { - System.out.println("INFO: " + string); - } else { - log.info(string); - } - } - - /** - * Attempt to log a WARN statement. If Log4j is not yet setup, send to System OUT - * - * @param string - */ - private void warn(String string) { - if (!isLog4jConfigured()) { - System.out.println("WARN: " + string); - } else { - log.warn(string); - } - } - - /** - * Attempt to log a FATAL statement. If Log4j is not yet setup, send to System ERR - * - * @param string - * @param e - */ - private void fatal(String string, Exception e) { - if (!isLog4jConfigured()) { - System.err.println("FATAL: " + string); - e.printStackTrace(System.err); - } else { - log.fatal(string, e); - } - } - - /** - * Only current solution available to detect if log4j is truly configured. - *

- * Based on samples here: http://wiki.apache.org/logging-log4j/UsefulCode - */ - private boolean isLog4jConfigured() { - Enumeration appenders = org.apache.log4j.LogManager.getRootLogger() - .getAllAppenders(); - - if (!(appenders instanceof org.apache.log4j.helpers.NullEnumeration)) { - return true; - } else { - Enumeration loggers = org.apache.log4j.LogManager.getCurrentLoggers(); - while (loggers.hasMoreElements()) { - Logger c = (Logger) loggers.nextElement(); - if (!(c.getAllAppenders() instanceof org.apache.log4j.helpers.NullEnumeration)) { - return true; - } - } - } - return false; - } -} diff --git a/dspace-api/src/main/java/org/dspace/core/Utils.java b/dspace-api/src/main/java/org/dspace/core/Utils.java index a7e59a2e46..32c32776f7 100644 --- a/dspace-api/src/main/java/org/dspace/core/Utils.java +++ b/dspace-api/src/main/java/org/dspace/core/Utils.java @@ -30,7 +30,7 @@ import java.util.regex.Pattern; import com.coverity.security.Escape; import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; /** * Utility functions for DSpace. @@ -42,7 +42,7 @@ public final class Utils { /** * log4j logger */ - private static Logger log = Logger.getLogger(Utils.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(Utils.class); private static final Pattern DURATION_PATTERN = Pattern .compile("(\\d+)([smhdwy])"); diff --git a/dspace-api/src/main/java/org/dspace/core/factory/CoreServiceFactory.java b/dspace-api/src/main/java/org/dspace/core/factory/CoreServiceFactory.java index 888cd21764..e7260fc2b4 100644 --- a/dspace-api/src/main/java/org/dspace/core/factory/CoreServiceFactory.java +++ b/dspace-api/src/main/java/org/dspace/core/factory/CoreServiceFactory.java @@ -10,6 +10,7 @@ package org.dspace.core.factory; import org.dspace.core.service.LicenseService; import org.dspace.core.service.NewsService; import org.dspace.core.service.PluginService; +import org.dspace.service.ClientInfoService; import org.dspace.services.factory.DSpaceServicesFactory; /** @@ -26,6 +27,8 @@ public abstract class CoreServiceFactory { public abstract PluginService getPluginService(); + public abstract ClientInfoService getClientInfoService(); + public static CoreServiceFactory getInstance() { return DSpaceServicesFactory.getInstance().getServiceManager() .getServiceByName("coreServiceFactory", CoreServiceFactory.class); diff --git a/dspace-api/src/main/java/org/dspace/core/factory/CoreServiceFactoryImpl.java b/dspace-api/src/main/java/org/dspace/core/factory/CoreServiceFactoryImpl.java index 4beb47f2c0..7db3ad24d7 100644 --- a/dspace-api/src/main/java/org/dspace/core/factory/CoreServiceFactoryImpl.java +++ b/dspace-api/src/main/java/org/dspace/core/factory/CoreServiceFactoryImpl.java @@ -10,6 +10,7 @@ package org.dspace.core.factory; import org.dspace.core.service.LicenseService; import org.dspace.core.service.NewsService; import org.dspace.core.service.PluginService; +import org.dspace.service.ClientInfoService; import org.springframework.beans.factory.annotation.Autowired; /** @@ -29,6 +30,9 @@ public class CoreServiceFactoryImpl extends CoreServiceFactory { @Autowired(required = true) private PluginService pluginService; + @Autowired(required = true) + private ClientInfoService clientInfoService; + @Override public LicenseService getLicenseService() { return licenseService; @@ -43,4 +47,8 @@ public class CoreServiceFactoryImpl extends CoreServiceFactory { public PluginService getPluginService() { return pluginService; } + + public ClientInfoService getClientInfoService() { + return clientInfoService; + } } 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 6cc4e59204..67e882a558 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 @@ -11,7 +11,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.DSpaceObject; import org.dspace.content.Item; import org.dspace.content.MetadataValue; @@ -40,7 +40,7 @@ public abstract class AbstractTranslator extends AbstractCurationTask { protected String apiKey = ""; - private static Logger log = Logger.getLogger(AbstractTranslator.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(AbstractTranslator.class); protected List results = new ArrayList(); diff --git a/dspace-api/src/main/java/org/dspace/ctask/general/BasicLinkChecker.java b/dspace-api/src/main/java/org/dspace/ctask/general/BasicLinkChecker.java index dc59292afe..fbc6eebdb5 100644 --- a/dspace-api/src/main/java/org/dspace/ctask/general/BasicLinkChecker.java +++ b/dspace-api/src/main/java/org/dspace/ctask/general/BasicLinkChecker.java @@ -13,7 +13,7 @@ import java.net.URL; import java.util.ArrayList; import java.util.List; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.DSpaceObject; import org.dspace.content.Item; import org.dspace.content.MetadataValue; @@ -40,7 +40,7 @@ public class BasicLinkChecker extends AbstractCurationTask { private List results = null; // The log4j logger for this class - private static Logger log = Logger.getLogger(BasicLinkChecker.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(BasicLinkChecker.class); /** diff --git a/dspace-api/src/main/java/org/dspace/ctask/general/BitstreamsIntoMetadata.java b/dspace-api/src/main/java/org/dspace/ctask/general/BitstreamsIntoMetadata.java index 79da1eff90..d7ba7fed1f 100644 --- a/dspace-api/src/main/java/org/dspace/ctask/general/BitstreamsIntoMetadata.java +++ b/dspace-api/src/main/java/org/dspace/ctask/general/BitstreamsIntoMetadata.java @@ -10,7 +10,7 @@ package org.dspace.ctask.general; import java.sql.SQLException; import java.util.List; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Bitstream; import org.dspace.content.Bundle; @@ -33,7 +33,7 @@ public class BitstreamsIntoMetadata extends AbstractCurationTask { protected List results = null; // The log4j logger for this class - private static Logger log = Logger.getLogger(BitstreamsIntoMetadata.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(BitstreamsIntoMetadata.class); /** diff --git a/dspace-api/src/main/java/org/dspace/ctask/general/MetadataWebService.java b/dspace-api/src/main/java/org/dspace/ctask/general/MetadataWebService.java index 9b49105c36..2b6c52d0d6 100644 --- a/dspace-api/src/main/java/org/dspace/ctask/general/MetadataWebService.java +++ b/dspace-api/src/main/java/org/dspace/ctask/general/MetadataWebService.java @@ -33,7 +33,7 @@ import org.apache.http.HttpStatus; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.DSpaceObject; import org.dspace.content.Item; @@ -130,7 +130,7 @@ public class MetadataWebService extends AbstractCurationTask implements Namespac /** * log4j category */ - private static final Logger log = Logger.getLogger(MetadataWebService.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(MetadataWebService.class); // transform token parsing pattern protected Pattern ttPattern = Pattern.compile("\'([^\']*)\'|(\\S+)"); // URL of web service with template parameters diff --git a/dspace-api/src/main/java/org/dspace/ctask/general/MicrosoftTranslator.java b/dspace-api/src/main/java/org/dspace/ctask/general/MicrosoftTranslator.java index 88700be299..43f61d13f8 100644 --- a/dspace-api/src/main/java/org/dspace/ctask/general/MicrosoftTranslator.java +++ b/dspace-api/src/main/java/org/dspace/ctask/general/MicrosoftTranslator.java @@ -16,7 +16,7 @@ import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.core.ConfigurationManager; /** @@ -36,7 +36,7 @@ public class MicrosoftTranslator extends AbstractTranslator { protected final String baseUrl = "http://api.microsofttranslator.com/V2/Http.svc/Translate"; - private static final Logger log = Logger.getLogger(MicrosoftTranslator.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(MicrosoftTranslator.class); @Override diff --git a/dspace-api/src/main/java/org/dspace/ctask/testing/PropertyParameterTestingTask.java b/dspace-api/src/main/java/org/dspace/ctask/testing/PropertyParameterTestingTask.java new file mode 100644 index 0000000000..279204cf57 --- /dev/null +++ b/dspace-api/src/main/java/org/dspace/ctask/testing/PropertyParameterTestingTask.java @@ -0,0 +1,61 @@ +/** + * The contents of this file are subject to the license and copyright + * detailed in the LICENSE and NOTICE files at the root of the source + * tree and available online at + * + * http://www.dspace.org/license/ + */ + +package org.dspace.ctask.testing; + +import java.io.IOException; + +import org.dspace.content.DSpaceObject; +import org.dspace.core.Context; +import org.dspace.curate.AbstractCurationTask; +import org.dspace.curate.Curator; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Logs what it was asked to do, samples run parameters and task + * properties, making no changes to the repository. For testing. + * + *

+ * To test parameters and properties, set a value for the run parameter + * "runParameter" or the task property "taskProperty". + * + *

+ * This is a debugging tool, NOT a regression test. + * + * @author mhwood + */ +public class PropertyParameterTestingTask + extends AbstractCurationTask { + private static final Logger LOG + = LoggerFactory.getLogger(PropertyParameterTestingTask.class); + + @Override + public void init(Curator curator, String taskId) + throws IOException { + super.init(curator, taskId); + LOG.info("Received 'init' on task {}", taskId); + // Display some properties. + LOG.info("taskProperty = '{}'; runParameter = '{}'", + taskProperty("taskProperty"), taskProperty("runParameter")); + } + + @Override + public int perform(DSpaceObject dso) + throws IOException { + LOG.info("Received 'perform' on {}", dso); + return Curator.CURATE_SUCCESS; + } + + @Override + public int perform(Context ctx, String id) + throws IOException { + LOG.info("Received 'perform' on object ID {}", id); + return Curator.CURATE_SUCCESS; + } +} diff --git a/dspace-api/src/main/java/org/dspace/curate/AbstractCurationTask.java b/dspace-api/src/main/java/org/dspace/curate/AbstractCurationTask.java index cf9c9fe9de..d5ec37d60b 100644 --- a/dspace-api/src/main/java/org/dspace/curate/AbstractCurationTask.java +++ b/dspace-api/src/main/java/org/dspace/curate/AbstractCurationTask.java @@ -12,8 +12,8 @@ import java.sql.SQLException; import java.util.Iterator; import java.util.List; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.content.Collection; import org.dspace.content.Community; import org.dspace.content.DSpaceObject; @@ -40,7 +40,7 @@ public abstract class AbstractCurationTask implements CurationTask { // curator-assigned taskId protected String taskId = null; // logger - private static Logger log = Logger.getLogger(AbstractCurationTask.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(AbstractCurationTask.class); protected CommunityService communityService; protected ItemService itemService; protected HandleService handleService; @@ -198,14 +198,17 @@ public abstract class AbstractCurationTask implements CurationTask { /** * Returns task configuration property value for passed name, else * null if no properties defined or no value for passed key. + * If a taskID/Name is specified, prepend it on the configuration name. * * @param name the property name * @return value * the property value, or null */ protected String taskProperty(String name) { - // If a taskID/Name is specified, prepend it on the configuration name - if (StringUtils.isNotBlank(taskId)) { + String parameter = curator.getRunParameter(name); + if (null != parameter) { + return parameter; + } else if (StringUtils.isNotBlank(taskId)) { return configurationService.getProperty(taskId + "." + name); } else { return configurationService.getProperty(name); @@ -215,6 +218,7 @@ public abstract class AbstractCurationTask implements CurationTask { /** * Returns task configuration integer property value for passed name, else * passed default value if no properties defined or no value for passed key. + * If a taskID/Name is specified, prepend it on the configuration name. * * @param name the property name * @param defaultValue value @@ -223,8 +227,10 @@ public abstract class AbstractCurationTask implements CurationTask { * the property value, or default value */ protected int taskIntProperty(String name, int defaultValue) { - // If a taskID/Name is specified, prepend it on the configuration name - if (StringUtils.isNotBlank(taskId)) { + String parameter = curator.getRunParameter(name); + if (null != parameter) { + return Integer.valueOf(parameter); + } else if (StringUtils.isNotBlank(taskId)) { return configurationService.getIntProperty(taskId + "." + name, defaultValue); } else { return configurationService.getIntProperty(name, defaultValue); @@ -234,6 +240,7 @@ public abstract class AbstractCurationTask implements CurationTask { /** * Returns task configuration long property value for passed name, else * passed default value if no properties defined or no value for passed key. + * If a taskID/Name is specified, prepend it on the configuration name. * * @param name the property name * @param defaultValue value @@ -242,8 +249,10 @@ public abstract class AbstractCurationTask implements CurationTask { * the property value, or default */ protected long taskLongProperty(String name, long defaultValue) { - // If a taskID/Name is specified, prepend it on the configuration name - if (StringUtils.isNotBlank(taskId)) { + String parameter = curator.getRunParameter(name); + if (null != parameter) { + return Long.valueOf(parameter); + } else if (StringUtils.isNotBlank(taskId)) { return configurationService.getLongProperty(taskId + "." + name, defaultValue); } else { return configurationService.getLongProperty(name, defaultValue); @@ -253,6 +262,7 @@ public abstract class AbstractCurationTask implements CurationTask { /** * Returns task configuration boolean property value for passed name, else * passed default value if no properties defined or no value for passed key. + * If a taskID/Name is specified, prepend it on the configuration name. * * @param name the property name * @param defaultValue value @@ -261,8 +271,10 @@ public abstract class AbstractCurationTask implements CurationTask { * the property value, or default */ protected boolean taskBooleanProperty(String name, boolean defaultValue) { - // If a taskID/Name is specified, prepend it on the configuration name - if (StringUtils.isNotBlank(taskId)) { + String parameter = curator.getRunParameter(name); + if (null != parameter) { + return Boolean.valueOf(parameter); + } else if (StringUtils.isNotBlank(taskId)) { return configurationService.getBooleanProperty(taskId + "." + name, defaultValue); } else { return configurationService.getBooleanProperty(name, defaultValue); @@ -272,14 +284,17 @@ public abstract class AbstractCurationTask implements CurationTask { /** * Returns task configuration Array property value for passed name, else * null if no properties defined or no value for passed key. + * If a taskID/Name is specified, prepend it on the configuration name. * * @param name the property name * @return value * the property value, or null */ protected String[] taskArrayProperty(String name) { - // If a taskID/Name is specified, prepend it on the configuration name - if (StringUtils.isNotBlank(taskId)) { + String parameter = curator.getRunParameter(name); + if (null != parameter) { + return new String[] { parameter }; + } else if (StringUtils.isNotBlank(taskId)) { return configurationService.getArrayProperty(taskId + "." + name); } else { return configurationService.getArrayProperty(name); diff --git a/dspace-api/src/main/java/org/dspace/curate/CitationPage.java b/dspace-api/src/main/java/org/dspace/curate/CitationPage.java index 8634eeb5bb..386bf0ba92 100644 --- a/dspace-api/src/main/java/org/dspace/curate/CitationPage.java +++ b/dspace-api/src/main/java/org/dspace/curate/CitationPage.java @@ -16,7 +16,7 @@ import java.util.List; import java.util.Map; import org.apache.commons.lang3.tuple.Pair; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Bitstream; import org.dspace.content.BitstreamFormat; @@ -46,7 +46,7 @@ public class CitationPage extends AbstractCurationTask { /** * Class Logger */ - private static Logger log = Logger.getLogger(CitationPage.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(CitationPage.class); protected int status = Curator.CURATE_UNSET; protected String result = null; diff --git a/dspace-api/src/main/java/org/dspace/curate/CurationCli.java b/dspace-api/src/main/java/org/dspace/curate/CurationCli.java index c0b206abfc..d5577cf368 100644 --- a/dspace-api/src/main/java/org/dspace/curate/CurationCli.java +++ b/dspace-api/src/main/java/org/dspace/curate/CurationCli.java @@ -9,7 +9,9 @@ package org.dspace.curate; import java.io.BufferedReader; import java.io.FileReader; +import java.util.HashMap; import java.util.Iterator; +import java.util.Map; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.CommandLineParser; @@ -48,6 +50,8 @@ public class CurationCli { "file containing curation task names"); options.addOption("i", "id", true, "Id (handle) of object to perform task on, or 'all' to perform on whole repository"); + options.addOption("p", "parameter", true, + "a task parameter 'NAME=VALUE'"); options.addOption("q", "queue", true, "name of task queue to process"); options.addOption("e", "eperson", true, @@ -71,6 +75,7 @@ public class CurationCli { String reporterName = null; String scope = null; boolean verbose = false; + final Map parameters = new HashMap<>(); if (line.hasOption('h')) { HelpFormatter help = new HelpFormatter(); @@ -104,6 +109,19 @@ public class CurationCli { ePersonName = line.getOptionValue('e'); } + if (line.hasOption('p')) { // parameter + for (String parameter : line.getOptionValues('p')) { + String[] parts = parameter.split("=", 2); + String name = parts[0].trim(); + String value; + if (parts.length > 1) { + value = parts[1].trim(); + } else { + value = "true"; + } + parameters.put(name, value); + } + } if (line.hasOption('r')) { // report file reporterName = line.getOptionValue('r'); } @@ -154,6 +172,7 @@ public class CurationCli { Curator.TxScope txScope = Curator.TxScope.valueOf(scope.toUpperCase()); curator.setTransactionScope(txScope); } + curator.addParameters(parameters); // we are operating in batch mode, if anyone cares. curator.setInvoked(Curator.Invoked.BATCH); // load curation tasks diff --git a/dspace-api/src/main/java/org/dspace/curate/Curator.java b/dspace-api/src/main/java/org/dspace/curate/Curator.java index 55d9843cb3..1a78544bc0 100644 --- a/dspace-api/src/main/java/org/dspace/curate/Curator.java +++ b/dspace-api/src/main/java/org/dspace/curate/Curator.java @@ -15,7 +15,7 @@ import java.util.Iterator; import java.util.List; import java.util.Map; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.Collection; import org.dspace.content.Community; import org.dspace.content.DSpaceObject; @@ -78,10 +78,11 @@ public class Curator { ; - private static final Logger log = Logger.getLogger(Curator.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(Curator.class); protected static final ThreadLocal curationCtx = new ThreadLocal<>(); + protected final Map runParameters = new HashMap<>(); protected Map trMap = new HashMap<>(); protected List perfList = new ArrayList<>(); protected TaskQueue taskQ = null; @@ -102,6 +103,32 @@ public class Curator { handleService = HandleServiceFactory.getInstance().getHandleService(); } + /** + * Set a parameter visible to all tasks in this Curator instance. + * @param name the parameter's name. + * @param value the parameter's value. + */ + public void addParameter(String name, String value) { + runParameters.put(name, value); + } + + /** + * Set many parameters visible to all tasks in this Curator instance. + * @param parameters parameter name/value pairs. + */ + public void addParameters(Map parameters) { + runParameters.putAll(parameters); + } + + /** + * Look up a run parameter. + * @param name the name of the desired parameter. + * @return the value of the named parameter. + */ + public String getRunParameter(String name) { + return runParameters.get(name); + } + /** * Add a task to the set to be performed. Caller should make no assumptions * on execution ordering. diff --git a/dspace-api/src/main/java/org/dspace/curate/FileTaskQueue.java b/dspace-api/src/main/java/org/dspace/curate/FileTaskQueue.java index fc665bcf2c..979ade99a5 100644 --- a/dspace-api/src/main/java/org/dspace/curate/FileTaskQueue.java +++ b/dspace-api/src/main/java/org/dspace/curate/FileTaskQueue.java @@ -19,7 +19,7 @@ import java.util.Iterator; import java.util.List; import java.util.Set; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.services.factory.DSpaceServicesFactory; @@ -30,7 +30,7 @@ import org.dspace.services.factory.DSpaceServicesFactory; * @author richardrodgers */ public class FileTaskQueue implements TaskQueue { - private static Logger log = Logger.getLogger(TaskQueue.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(TaskQueue.class); // base directory for curation task queues protected String tqDir; diff --git a/dspace-api/src/main/java/org/dspace/curate/TaskResolver.java b/dspace-api/src/main/java/org/dspace/curate/TaskResolver.java index 706992093b..a9a8e8906a 100644 --- a/dspace-api/src/main/java/org/dspace/curate/TaskResolver.java +++ b/dspace-api/src/main/java/org/dspace/curate/TaskResolver.java @@ -20,7 +20,7 @@ import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.core.factory.CoreServiceFactory; import org.dspace.services.factory.DSpaceServicesFactory; @@ -64,7 +64,7 @@ import org.dspace.services.factory.DSpaceServicesFactory; public class TaskResolver { // logging service - private static Logger log = Logger.getLogger(TaskResolver.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(TaskResolver.class); // base directory of task scripts & catalog name protected static final String CATALOG = "task.catalog"; diff --git a/dspace-api/src/main/java/org/dspace/curate/WorkflowCuratorServiceImpl.java b/dspace-api/src/main/java/org/dspace/curate/WorkflowCuratorServiceImpl.java index 580f8c42c3..5cecc13b89 100644 --- a/dspace-api/src/main/java/org/dspace/curate/WorkflowCuratorServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/curate/WorkflowCuratorServiceImpl.java @@ -23,7 +23,7 @@ import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Collection; import org.dspace.content.Item; @@ -58,7 +58,7 @@ public class WorkflowCuratorServiceImpl implements WorkflowCuratorService { /** * log4j logger */ - private Logger log = Logger.getLogger(WorkflowCuratorServiceImpl.class); + private Logger log = org.apache.logging.log4j.LogManager.getLogger(WorkflowCuratorServiceImpl.class); protected Map tsMap = new HashMap(); diff --git a/dspace-api/src/main/java/org/dspace/discovery/FullTextContentStreams.java b/dspace-api/src/main/java/org/dspace/discovery/FullTextContentStreams.java index 933ba459cb..78872a8bc7 100644 --- a/dspace-api/src/main/java/org/dspace/discovery/FullTextContentStreams.java +++ b/dspace-api/src/main/java/org/dspace/discovery/FullTextContentStreams.java @@ -27,7 +27,7 @@ import com.google.common.collect.Iterables; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.io.Charsets; import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.apache.solr.common.util.ContentStreamBase; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Bitstream; @@ -42,7 +42,7 @@ import org.dspace.core.Context; * Construct a ContentStream from a File */ public class FullTextContentStreams extends ContentStreamBase { - private static final Logger log = Logger.getLogger(FullTextContentStreams.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(FullTextContentStreams.class); public static final String FULLTEXT_BUNDLE = "TEXT"; diff --git a/dspace-api/src/main/java/org/dspace/discovery/IndexClient.java b/dspace-api/src/main/java/org/dspace/discovery/IndexClient.java index 7aaf63fe2d..1381e4dda2 100644 --- a/dspace-api/src/main/java/org/dspace/discovery/IndexClient.java +++ b/dspace-api/src/main/java/org/dspace/discovery/IndexClient.java @@ -16,7 +16,7 @@ import org.apache.commons.cli.HelpFormatter; import org.apache.commons.cli.OptionBuilder; import org.apache.commons.cli.Options; import org.apache.commons.cli.PosixParser; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.Collection; import org.dspace.content.Community; import org.dspace.content.DSpaceObject; @@ -37,7 +37,7 @@ import org.dspace.services.factory.DSpaceServicesFactory; */ public class IndexClient { - private static final Logger log = Logger.getLogger(IndexClient.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(IndexClient.class); /** * Default constructor diff --git a/dspace-api/src/main/java/org/dspace/discovery/IndexEventConsumer.java b/dspace-api/src/main/java/org/dspace/discovery/IndexEventConsumer.java index d8ec35806e..9117dd7ad2 100644 --- a/dspace-api/src/main/java/org/dspace/discovery/IndexEventConsumer.java +++ b/dspace-api/src/main/java/org/dspace/discovery/IndexEventConsumer.java @@ -10,7 +10,7 @@ package org.dspace.discovery; import java.util.HashSet; import java.util.Set; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.Bundle; import org.dspace.content.DSpaceObject; import org.dspace.core.Constants; @@ -30,7 +30,7 @@ public class IndexEventConsumer implements Consumer { /** * log4j logger */ - private static Logger log = Logger.getLogger(IndexEventConsumer.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(IndexEventConsumer.class); // collect Items, Collections, Communities that need indexing private Set objectsToUpdate = null; diff --git a/dspace-api/src/main/java/org/dspace/discovery/SolrServiceImpl.java b/dspace-api/src/main/java/org/dspace/discovery/SolrServiceImpl.java index 263370ed62..9a19bf0646 100644 --- a/dspace-api/src/main/java/org/dspace/discovery/SolrServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/discovery/SolrServiceImpl.java @@ -37,9 +37,9 @@ import java.util.Vector; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; import org.apache.commons.collections4.Transformer; -import org.apache.commons.lang.ArrayUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.commons.lang.time.DateFormatUtils; +import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.commons.validator.routines.UrlValidator; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; @@ -47,7 +47,7 @@ import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.SolrRequest; import org.apache.solr.client.solrj.SolrServer; @@ -134,7 +134,7 @@ import org.springframework.stereotype.Service; @Service public class SolrServiceImpl implements SearchService, IndexingService { - private static final Logger log = Logger.getLogger(SolrServiceImpl.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(SolrServiceImpl.class); protected static final String LAST_INDEXED_FIELD = "SolrIndexer.lastIndexed"; protected static final String HANDLE_FIELD = "handle"; diff --git a/dspace-api/src/main/java/org/dspace/discovery/SolrServiceMetadataBrowseIndexingPlugin.java b/dspace-api/src/main/java/org/dspace/discovery/SolrServiceMetadataBrowseIndexingPlugin.java index b47f81b6a2..5e78173d93 100644 --- a/dspace-api/src/main/java/org/dspace/discovery/SolrServiceMetadataBrowseIndexingPlugin.java +++ b/dspace-api/src/main/java/org/dspace/discovery/SolrServiceMetadataBrowseIndexingPlugin.java @@ -11,8 +11,9 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.solr.common.SolrInputDocument; import org.dspace.browse.BrowseException; import org.dspace.browse.BrowseIndex; @@ -44,8 +45,7 @@ import org.springframework.beans.factory.annotation.Autowired; */ public class SolrServiceMetadataBrowseIndexingPlugin implements SolrServiceIndexPlugin { - private static final Logger log = Logger - .getLogger(SolrServiceMetadataBrowseIndexingPlugin.class); + private static final Logger log = LogManager.getLogger(SolrServiceMetadataBrowseIndexingPlugin.class); @Autowired(required = true) protected ItemService itemService; diff --git a/dspace-api/src/main/java/org/dspace/discovery/SolrServiceResourceRestrictionPlugin.java b/dspace-api/src/main/java/org/dspace/discovery/SolrServiceResourceRestrictionPlugin.java index 4bea98390d..4fcc8c38ca 100644 --- a/dspace-api/src/main/java/org/dspace/discovery/SolrServiceResourceRestrictionPlugin.java +++ b/dspace-api/src/main/java/org/dspace/discovery/SolrServiceResourceRestrictionPlugin.java @@ -11,7 +11,7 @@ import java.sql.SQLException; import java.util.List; import java.util.Set; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.common.SolrInputDocument; import org.dspace.authorize.ResourcePolicy; @@ -39,7 +39,8 @@ import org.springframework.beans.factory.annotation.Autowired; */ public class SolrServiceResourceRestrictionPlugin implements SolrServiceIndexPlugin, SolrServiceSearchPlugin { - private static final Logger log = Logger.getLogger(SolrServiceResourceRestrictionPlugin.class); + private static final Logger log = + org.apache.logging.log4j.LogManager.getLogger(SolrServiceResourceRestrictionPlugin.class); @Autowired(required = true) protected AuthorizeService authorizeService; diff --git a/dspace-api/src/main/java/org/dspace/discovery/configuration/DiscoveryConfigurationService.java b/dspace-api/src/main/java/org/dspace/discovery/configuration/DiscoveryConfigurationService.java index d2d32d5ad9..69f992a29b 100644 --- a/dspace-api/src/main/java/org/dspace/discovery/configuration/DiscoveryConfigurationService.java +++ b/dspace-api/src/main/java/org/dspace/discovery/configuration/DiscoveryConfigurationService.java @@ -11,7 +11,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.dspace.content.DSpaceObject; import org.dspace.services.factory.DSpaceServicesFactory; diff --git a/dspace-api/src/main/java/org/dspace/discovery/configuration/DiscoverySortConfiguration.java b/dspace-api/src/main/java/org/dspace/discovery/configuration/DiscoverySortConfiguration.java index 8538b54db2..db6ac80f29 100644 --- a/dspace-api/src/main/java/org/dspace/discovery/configuration/DiscoverySortConfiguration.java +++ b/dspace-api/src/main/java/org/dspace/discovery/configuration/DiscoverySortConfiguration.java @@ -11,7 +11,7 @@ import java.util.ArrayList; import java.util.List; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; /** * @author Kevin Van de Velde (kevin at atmire dot com) 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 a96ed6c3d3..60081d1153 100644 --- a/dspace-api/src/main/java/org/dspace/disseminate/CitationDocumentServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/disseminate/CitationDocumentServiceImpl.java @@ -20,9 +20,9 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.Pair; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.PDPageContentStream; @@ -59,7 +59,7 @@ public class CitationDocumentServiceImpl implements CitationDocumentService, Ini /** * Class Logger */ - private static Logger log = Logger.getLogger(CitationDocumentServiceImpl.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(CitationDocumentServiceImpl.class); /** * A set of MIME types that can have a citation page added to them. That is, diff --git a/dspace-api/src/main/java/org/dspace/embargo/DefaultEmbargoSetter.java b/dspace-api/src/main/java/org/dspace/embargo/DefaultEmbargoSetter.java index 45b2d407ac..7857a45eb8 100644 --- a/dspace-api/src/main/java/org/dspace/embargo/DefaultEmbargoSetter.java +++ b/dspace-api/src/main/java/org/dspace/embargo/DefaultEmbargoSetter.java @@ -12,7 +12,7 @@ import java.sql.SQLException; import java.util.Date; import java.util.List; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.dspace.authorize.AuthorizeException; import org.dspace.authorize.ResourcePolicy; import org.dspace.authorize.factory.AuthorizeServiceFactory; diff --git a/dspace-api/src/main/java/org/dspace/embargo/EmbargoCLITool.java b/dspace-api/src/main/java/org/dspace/embargo/EmbargoCLITool.java index c0ee6ad720..49d2650bfd 100644 --- a/dspace-api/src/main/java/org/dspace/embargo/EmbargoCLITool.java +++ b/dspace-api/src/main/java/org/dspace/embargo/EmbargoCLITool.java @@ -16,7 +16,7 @@ import org.apache.commons.cli.HelpFormatter; import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; import org.apache.commons.cli.PosixParser; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.DCDate; import org.dspace.content.DSpaceObject; import org.dspace.content.Item; @@ -37,7 +37,7 @@ public class EmbargoCLITool { /** * log4j category */ - private static final Logger log = Logger.getLogger(EmbargoServiceImpl.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(EmbargoServiceImpl.class); private static final EmbargoService embargoService = EmbargoServiceFactory.getInstance().getEmbargoService(); diff --git a/dspace-api/src/main/java/org/dspace/embargo/EmbargoServiceImpl.java b/dspace-api/src/main/java/org/dspace/embargo/EmbargoServiceImpl.java index 68efce46e1..5ec83c7cdb 100644 --- a/dspace-api/src/main/java/org/dspace/embargo/EmbargoServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/embargo/EmbargoServiceImpl.java @@ -13,11 +13,11 @@ import java.util.Date; import java.util.Iterator; import java.util.List; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.DCDate; import org.dspace.content.Item; -import org.dspace.content.MetadataSchema; +import org.dspace.content.MetadataSchemaEnum; import org.dspace.content.MetadataValue; import org.dspace.content.service.ItemService; import org.dspace.core.Context; @@ -51,7 +51,7 @@ public class EmbargoServiceImpl implements EmbargoService { /** * log4j category */ - private final Logger log = Logger.getLogger(EmbargoServiceImpl.class); + private final Logger log = org.apache.logging.log4j.LogManager.getLogger(EmbargoServiceImpl.class); // Metadata field components for user-supplied embargo terms // set from the DSpace configuration by init() @@ -153,8 +153,8 @@ public class EmbargoServiceImpl implements EmbargoService { itemService.clearMetadata(context, item, lift_schema, lift_element, lift_qualifier, Item.ANY); // set the dc.date.available value to right now - itemService.clearMetadata(context, item, MetadataSchema.DC_SCHEMA, "date", "available", Item.ANY); - itemService.addMetadata(context, item, MetadataSchema.DC_SCHEMA, "date", "available", null, + itemService.clearMetadata(context, item, MetadataSchemaEnum.DC.getName(), "date", "available", Item.ANY); + itemService.addMetadata(context, item, MetadataSchemaEnum.DC.getName(), "date", "available", null, DCDate.getCurrent().toString()); log.info("Lifting embargo on Item " + item.getHandle()); diff --git a/dspace-api/src/main/java/org/dspace/eperson/AccountServiceImpl.java b/dspace-api/src/main/java/org/dspace/eperson/AccountServiceImpl.java index 6b9531788a..0e1034328a 100644 --- a/dspace-api/src/main/java/org/dspace/eperson/AccountServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/eperson/AccountServiceImpl.java @@ -12,7 +12,7 @@ import java.sql.SQLException; import java.util.Locale; import javax.mail.MessagingException; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.core.ConfigurationManager; import org.dspace.core.Context; @@ -42,7 +42,7 @@ public class AccountServiceImpl implements AccountService { /** * log4j log */ - private static Logger log = Logger.getLogger(AccountServiceImpl.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(AccountServiceImpl.class); @Autowired(required = true) protected EPersonService ePersonService; @Autowired(required = true) diff --git a/dspace-api/src/main/java/org/dspace/eperson/EPerson.java b/dspace-api/src/main/java/org/dspace/eperson/EPerson.java index 5835ebeac8..fc2950ee2b 100644 --- a/dspace-api/src/main/java/org/dspace/eperson/EPerson.java +++ b/dspace-api/src/main/java/org/dspace/eperson/EPerson.java @@ -21,8 +21,8 @@ import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.persistence.Transient; -import org.apache.commons.lang.BooleanUtils; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.BooleanUtils; +import org.apache.commons.lang3.StringUtils; import org.dspace.content.DSpaceObject; import org.dspace.content.DSpaceObjectLegacySupport; import org.dspace.content.Item; diff --git a/dspace-api/src/main/java/org/dspace/eperson/EPersonConsumer.java b/dspace-api/src/main/java/org/dspace/eperson/EPersonConsumer.java index 62761444a5..4f094bb5c5 100644 --- a/dspace-api/src/main/java/org/dspace/eperson/EPersonConsumer.java +++ b/dspace-api/src/main/java/org/dspace/eperson/EPersonConsumer.java @@ -11,7 +11,7 @@ import java.util.Date; import java.util.UUID; import javax.mail.MessagingException; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.core.ConfigurationManager; import org.dspace.core.Constants; import org.dspace.core.Context; @@ -35,7 +35,7 @@ public class EPersonConsumer implements Consumer { /** * log4j logger */ - private static Logger log = Logger.getLogger(EPersonConsumer.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(EPersonConsumer.class); protected EPersonService ePersonService = EPersonServiceFactory.getInstance().getEPersonService(); diff --git a/dspace-api/src/main/java/org/dspace/eperson/EPersonServiceImpl.java b/dspace-api/src/main/java/org/dspace/eperson/EPersonServiceImpl.java index 4c04482f1f..f173250cf3 100644 --- a/dspace-api/src/main/java/org/dspace/eperson/EPersonServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/eperson/EPersonServiceImpl.java @@ -18,8 +18,8 @@ import java.util.UUID; import org.apache.commons.codec.DecoderException; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.authorize.service.AuthorizeService; import org.dspace.content.DSpaceObjectServiceImpl; @@ -50,7 +50,7 @@ public class EPersonServiceImpl extends DSpaceObjectServiceImpl impleme /** * log4j logger */ - private final Logger log = Logger.getLogger(EPersonServiceImpl.class); + private final Logger log = org.apache.logging.log4j.LogManager.getLogger(EPersonServiceImpl.class); @Autowired(required = true) protected EPersonDAO ePersonDAO; diff --git a/dspace-api/src/main/java/org/dspace/eperson/Group2GroupCache.java b/dspace-api/src/main/java/org/dspace/eperson/Group2GroupCache.java index df57f173b3..09bdf34d4c 100644 --- a/dspace-api/src/main/java/org/dspace/eperson/Group2GroupCache.java +++ b/dspace-api/src/main/java/org/dspace/eperson/Group2GroupCache.java @@ -81,7 +81,7 @@ public class Group2GroupCache implements Serializable { @Override public int hashCode() { - return new org.apache.commons.lang.builder.HashCodeBuilder() + return new org.apache.commons.lang3.builder.HashCodeBuilder() .append(parent == null ? "" : parent.getID()) .append(child == null ? "" : child.getID()) .toHashCode(); diff --git a/dspace-api/src/main/java/org/dspace/eperson/GroupServiceImpl.java b/dspace-api/src/main/java/org/dspace/eperson/GroupServiceImpl.java index fccaf3f1c8..7851e1cdc3 100644 --- a/dspace-api/src/main/java/org/dspace/eperson/GroupServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/eperson/GroupServiceImpl.java @@ -18,7 +18,7 @@ import java.util.Set; import java.util.UUID; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang.ObjectUtils; +import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.Pair; import org.dspace.authorize.AuthorizeConfiguration; @@ -686,7 +686,7 @@ public class GroupServiceImpl extends DSpaceObjectServiceImpl implements @Override public Group findByIdOrLegacyId(Context context, String id) throws SQLException { - if (org.apache.commons.lang.StringUtils.isNumeric(id)) { + if (org.apache.commons.lang3.StringUtils.isNumeric(id)) { return findByLegacyId(context, Integer.parseInt(id)); } else { return find(context, UUIDUtils.fromString(id)); diff --git a/dspace-api/src/main/java/org/dspace/eperson/SubscribeCLITool.java b/dspace-api/src/main/java/org/dspace/eperson/SubscribeCLITool.java index 1cdefcbbdd..f8c5e6268e 100644 --- a/dspace-api/src/main/java/org/dspace/eperson/SubscribeCLITool.java +++ b/dspace-api/src/main/java/org/dspace/eperson/SubscribeCLITool.java @@ -25,13 +25,12 @@ import org.apache.commons.cli.HelpFormatter; import org.apache.commons.cli.Option; import org.apache.commons.cli.Options; import org.apache.commons.cli.PosixParser; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Level; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.content.Collection; import org.dspace.content.DCDate; import org.dspace.content.Item; -import org.dspace.content.MetadataSchema; +import org.dspace.content.MetadataSchemaEnum; import org.dspace.content.MetadataValue; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.ItemService; @@ -55,7 +54,7 @@ import org.dspace.search.HarvestedItemInfo; */ public class SubscribeCLITool { - private static final Logger log = Logger.getLogger(SubscribeCLITool.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(SubscribeCLITool.class); private static HandleService handleService = HandleServiceFactory.getInstance().getHandleService(); private static ItemService itemService = ContentServiceFactory.getInstance().getItemService(); @@ -229,7 +228,7 @@ public class SubscribeCLITool { } List authors = itemService - .getMetadata(hii.item, MetadataSchema.DC_SCHEMA, "contributor", Item.ANY, Item.ANY); + .getMetadata(hii.item, MetadataSchemaEnum.DC.getName(), "contributor", Item.ANY, Item.ANY); if (authors.size() > 0) { emailText.append("\n ").append(labels.getString("org.dspace.eperson.Subscribe.authors")) @@ -315,10 +314,6 @@ public class SubscribeCLITool { boolean test = line.hasOption("t"); - if (test) { - log.setLevel(Level.DEBUG); - } - Context context = null; try { diff --git a/dspace-api/src/main/java/org/dspace/eperson/SubscribeServiceImpl.java b/dspace-api/src/main/java/org/dspace/eperson/SubscribeServiceImpl.java index cd9e078463..34dbcdbeaa 100644 --- a/dspace-api/src/main/java/org/dspace/eperson/SubscribeServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/eperson/SubscribeServiceImpl.java @@ -10,7 +10,7 @@ package org.dspace.eperson; import java.sql.SQLException; import java.util.List; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.authorize.service.AuthorizeService; import org.dspace.content.Collection; @@ -32,7 +32,7 @@ public class SubscribeServiceImpl implements SubscribeService { /** * log4j logger */ - private Logger log = Logger.getLogger(SubscribeServiceImpl.class); + private Logger log = org.apache.logging.log4j.LogManager.getLogger(SubscribeServiceImpl.class); @Autowired(required = true) protected SubscriptionDAO subscriptionDAO; diff --git a/dspace-api/src/main/java/org/dspace/eperson/dao/impl/GroupDAOImpl.java b/dspace-api/src/main/java/org/dspace/eperson/dao/impl/GroupDAOImpl.java index 8050bd9755..3c26468cc0 100644 --- a/dspace-api/src/main/java/org/dspace/eperson/dao/impl/GroupDAOImpl.java +++ b/dspace-api/src/main/java/org/dspace/eperson/dao/impl/GroupDAOImpl.java @@ -13,7 +13,7 @@ import java.util.List; import java.util.UUID; import javax.persistence.Query; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.Pair; import org.dspace.content.MetadataField; import org.dspace.core.AbstractHibernateDSODAO; diff --git a/dspace-api/src/main/java/org/dspace/event/BasicDispatcher.java b/dspace-api/src/main/java/org/dspace/event/BasicDispatcher.java index 63b2dab1a9..543ad934b3 100644 --- a/dspace-api/src/main/java/org/dspace/event/BasicDispatcher.java +++ b/dspace-api/src/main/java/org/dspace/event/BasicDispatcher.java @@ -9,7 +9,7 @@ package org.dspace.event; import java.util.Iterator; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.core.Context; import org.dspace.core.Utils; @@ -29,7 +29,7 @@ public class BasicDispatcher extends Dispatcher { /** * log4j category */ - private static Logger log = Logger.getLogger(BasicDispatcher.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(BasicDispatcher.class); @Override public void addConsumerProfile(ConsumerProfile cp) diff --git a/dspace-api/src/main/java/org/dspace/event/ConsumerProfile.java b/dspace-api/src/main/java/org/dspace/event/ConsumerProfile.java index f43cc370f1..01f0d4fc56 100644 --- a/dspace-api/src/main/java/org/dspace/event/ConsumerProfile.java +++ b/dspace-api/src/main/java/org/dspace/event/ConsumerProfile.java @@ -10,7 +10,7 @@ package org.dspace.event; import java.util.ArrayList; import java.util.List; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.core.ConfigurationManager; /** @@ -25,7 +25,7 @@ public class ConsumerProfile { /** * log4j category */ - private static Logger log = Logger.getLogger(ConsumerProfile.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(ConsumerProfile.class); /** * Name matching the key in DSpace Configuration diff --git a/dspace-api/src/main/java/org/dspace/event/Event.java b/dspace-api/src/main/java/org/dspace/event/Event.java index 45b54362d6..45b6407b28 100644 --- a/dspace-api/src/main/java/org/dspace/event/Event.java +++ b/dspace-api/src/main/java/org/dspace/event/Event.java @@ -16,8 +16,8 @@ import java.util.List; import java.util.Map; import java.util.UUID; -import org.apache.commons.lang.builder.HashCodeBuilder; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.builder.HashCodeBuilder; +import org.apache.logging.log4j.Logger; import org.dspace.content.DSpaceObject; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.core.Constants; @@ -224,7 +224,7 @@ public class Event implements Serializable { /** * log4j category */ - private static Logger log = Logger.getLogger(Event.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(Event.class); /** * Constructor. diff --git a/dspace-api/src/main/java/org/dspace/event/EventServiceImpl.java b/dspace-api/src/main/java/org/dspace/event/EventServiceImpl.java index 891148b672..1afc0a22f5 100644 --- a/dspace-api/src/main/java/org/dspace/event/EventServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/event/EventServiceImpl.java @@ -14,7 +14,7 @@ import java.util.Iterator; import java.util.List; import java.util.Map; -import org.apache.commons.lang.ArrayUtils; +import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.pool2.KeyedObjectPool; import org.apache.commons.pool2.KeyedPooledObjectFactory; import org.apache.commons.pool2.PoolUtils; @@ -22,7 +22,7 @@ import org.apache.commons.pool2.PooledObject; import org.apache.commons.pool2.impl.DefaultPooledObject; import org.apache.commons.pool2.impl.GenericKeyedObjectPool; import org.apache.commons.pool2.impl.GenericKeyedObjectPoolConfig; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.core.Context; import org.dspace.event.service.EventService; import org.dspace.services.ConfigurationService; @@ -39,7 +39,7 @@ public class EventServiceImpl implements EventService { /** * log4j category */ - private Logger log = Logger.getLogger(EventServiceImpl.class); + private Logger log = org.apache.logging.log4j.LogManager.getLogger(EventServiceImpl.class); protected DispatcherPoolFactory dispatcherFactory = null; diff --git a/dspace-api/src/main/java/org/dspace/event/TestConsumer.java b/dspace-api/src/main/java/org/dspace/event/TestConsumer.java index 379276ccda..e40c0d9a36 100644 --- a/dspace-api/src/main/java/org/dspace/event/TestConsumer.java +++ b/dspace-api/src/main/java/org/dspace/event/TestConsumer.java @@ -12,7 +12,7 @@ import java.text.SimpleDateFormat; import java.util.Date; import org.apache.commons.lang3.ArrayUtils; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.core.ConfigurationManager; import org.dspace.core.Context; import org.dspace.eperson.EPerson; @@ -27,7 +27,7 @@ import org.dspace.eperson.EPerson; */ public class TestConsumer implements Consumer { // Log4j logger - private static Logger log = Logger.getLogger(TestConsumer.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(TestConsumer.class); // Send diagnostic output here - set to null to turn it off. private static PrintStream out = ConfigurationManager diff --git a/dspace-api/src/main/java/org/dspace/google/GoogleAccount.java b/dspace-api/src/main/java/org/dspace/google/GoogleAccount.java index 6c95a89e25..a24c02a2e1 100644 --- a/dspace-api/src/main/java/org/dspace/google/GoogleAccount.java +++ b/dspace-api/src/main/java/org/dspace/google/GoogleAccount.java @@ -20,7 +20,7 @@ import com.google.api.client.json.JsonFactory; import com.google.api.client.json.jackson2.JacksonFactory; import com.google.api.services.analytics.Analytics; import com.google.api.services.analytics.AnalyticsScopes; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.services.factory.DSpaceServicesFactory; /** @@ -47,7 +47,7 @@ public class GoogleAccount { private volatile static GoogleAccount uniqueInstance; - private static Logger log = Logger.getLogger(GoogleAccount.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(GoogleAccount.class); private GoogleAccount() { diff --git a/dspace-api/src/main/java/org/dspace/google/GoogleRecorderEventListener.java b/dspace-api/src/main/java/org/dspace/google/GoogleRecorderEventListener.java index f7ebaebb4d..ec86e5b410 100644 --- a/dspace-api/src/main/java/org/dspace/google/GoogleRecorderEventListener.java +++ b/dspace-api/src/main/java/org/dspace/google/GoogleRecorderEventListener.java @@ -23,10 +23,10 @@ import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.factory.ContentServiceFactory; -import org.dspace.core.ConfigurationManager; import org.dspace.core.Constants; +import org.dspace.service.ClientInfoService; import org.dspace.services.ConfigurationService; import org.dspace.services.model.Event; import org.dspace.usage.AbstractUsageEventListener; @@ -46,10 +46,11 @@ public class GoogleRecorderEventListener extends AbstractUsageEventListener { private String analyticsKey; private CloseableHttpClient httpclient; private String GoogleURL = "https://www.google-analytics.com/collect"; - private static Logger log = Logger.getLogger(GoogleRecorderEventListener.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(GoogleRecorderEventListener.class); protected ContentServiceFactory contentServiceFactory; protected ConfigurationService configurationService; + protected ClientInfoService clientInfoService; public GoogleRecorderEventListener() { // httpclient is threadsafe so we only need one. @@ -62,10 +63,15 @@ public class GoogleRecorderEventListener extends AbstractUsageEventListener { } @Autowired - public void setConfigurationService(final ConfigurationService configurationService) { + public void setConfigurationService(ConfigurationService configurationService) { this.configurationService = configurationService; } + @Autowired + public void setClientInfoService(ClientInfoService clientInfoService) { + this.clientInfoService = clientInfoService; + } + @Override public void receiveEvent(Event event) { if ((event instanceof UsageEvent)) { @@ -187,22 +193,7 @@ public class GoogleRecorderEventListener extends AbstractUsageEventListener { } private String getIPAddress(HttpServletRequest request) { - String clientIP = request.getRemoteAddr(); - if (ConfigurationManager.getBooleanProperty("useProxies", false) && request - .getHeader("X-Forwarded-For") != null) { - /* This header is a comma delimited list */ - for (String xfip : request.getHeader("X-Forwarded-For").split(",")) { - /* proxy itself will sometime populate this header with the same value in - remote address. ordering in spec is vague, we'll just take the last - not equal to the proxy - */ - if (!request.getHeader("X-Forwarded-For").contains(clientIP)) { - clientIP = xfip.trim(); - } - } - } - - return clientIP; + return clientInfoService.getClientIp(request); } } diff --git a/dspace-api/src/main/java/org/dspace/handle/HandlePlugin.java b/dspace-api/src/main/java/org/dspace/handle/HandlePlugin.java index a965ade577..9e8d04faf2 100644 --- a/dspace-api/src/main/java/org/dspace/handle/HandlePlugin.java +++ b/dspace-api/src/main/java/org/dspace/handle/HandlePlugin.java @@ -21,7 +21,7 @@ import net.handle.hdllib.HandleValue; import net.handle.hdllib.ScanCallback; import net.handle.hdllib.Util; import net.handle.util.StreamTable; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.core.Context; import org.dspace.handle.factory.HandleServiceFactory; import org.dspace.handle.service.HandleService; @@ -51,7 +51,7 @@ public class HandlePlugin implements HandleStorage { /** * log4j category */ - private static Logger log = Logger.getLogger(HandlePlugin.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(HandlePlugin.class); /** * The DSpace service manager kernel diff --git a/dspace-api/src/main/java/org/dspace/handle/HandleServiceImpl.java b/dspace-api/src/main/java/org/dspace/handle/HandleServiceImpl.java index d322fdd5c2..ca545e0722 100644 --- a/dspace-api/src/main/java/org/dspace/handle/HandleServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/handle/HandleServiceImpl.java @@ -12,8 +12,8 @@ import java.util.ArrayList; import java.util.List; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.content.DSpaceObject; import org.dspace.content.service.SiteService; import org.dspace.core.Constants; @@ -41,7 +41,7 @@ public class HandleServiceImpl implements HandleService { /** * log4j category */ - private static Logger log = Logger.getLogger(HandleServiceImpl.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(HandleServiceImpl.class); /** * Prefix registered to no one diff --git a/dspace-api/src/main/java/org/dspace/handle/UpdateHandlePrefix.java b/dspace-api/src/main/java/org/dspace/handle/UpdateHandlePrefix.java index 333ac801f8..5710f8cf81 100644 --- a/dspace-api/src/main/java/org/dspace/handle/UpdateHandlePrefix.java +++ b/dspace-api/src/main/java/org/dspace/handle/UpdateHandlePrefix.java @@ -12,7 +12,7 @@ import java.io.InputStreamReader; import java.sql.SQLException; import java.util.Iterator; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.MetadataValue; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.MetadataValueService; @@ -33,7 +33,7 @@ import org.dspace.services.factory.DSpaceServicesFactory; */ public class UpdateHandlePrefix { - private static final Logger log = Logger.getLogger(UpdateHandlePrefix.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(UpdateHandlePrefix.class); private static final ConfigurationService configurationService = DSpaceServicesFactory.getInstance() .getConfigurationService(); diff --git a/dspace-api/src/main/java/org/dspace/harvest/HarvestConsumer.java b/dspace-api/src/main/java/org/dspace/harvest/HarvestConsumer.java index 37690fa8d0..727c41ee37 100644 --- a/dspace-api/src/main/java/org/dspace/harvest/HarvestConsumer.java +++ b/dspace-api/src/main/java/org/dspace/harvest/HarvestConsumer.java @@ -9,7 +9,7 @@ package org.dspace.harvest; import java.util.UUID; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.Collection; import org.dspace.content.Item; import org.dspace.core.Constants; @@ -31,7 +31,7 @@ public class HarvestConsumer implements Consumer { /** * log4j logger */ - private static Logger log = Logger.getLogger(HarvestConsumer.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(HarvestConsumer.class); protected HarvestedCollectionService harvestedCollectionService; protected HarvestedItemService harvestedItemService; diff --git a/dspace-api/src/main/java/org/dspace/harvest/HarvestScheduler.java b/dspace-api/src/main/java/org/dspace/harvest/HarvestScheduler.java index 2867a804c9..d668b09bc4 100644 --- a/dspace-api/src/main/java/org/dspace/harvest/HarvestScheduler.java +++ b/dspace-api/src/main/java/org/dspace/harvest/HarvestScheduler.java @@ -15,7 +15,7 @@ import java.util.List; import java.util.Stack; import java.util.UUID; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.CollectionService; @@ -32,7 +32,7 @@ import org.dspace.harvest.service.HarvestedCollectionService; * @author alexey */ public class HarvestScheduler implements Runnable { - protected static Logger log = Logger.getLogger(HarvestScheduler.class); + protected static Logger log = org.apache.logging.log4j.LogManager.getLogger(HarvestScheduler.class); protected static EPerson harvestAdmin; diff --git a/dspace-api/src/main/java/org/dspace/harvest/HarvestThread.java b/dspace-api/src/main/java/org/dspace/harvest/HarvestThread.java index c021d455bd..52498558d4 100644 --- a/dspace-api/src/main/java/org/dspace/harvest/HarvestThread.java +++ b/dspace-api/src/main/java/org/dspace/harvest/HarvestThread.java @@ -10,7 +10,7 @@ package org.dspace.harvest; import java.sql.SQLException; import java.util.UUID; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.Collection; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.CollectionService; @@ -25,7 +25,7 @@ import org.dspace.harvest.service.HarvestedCollectionService; */ public class HarvestThread extends Thread { - private static final Logger log = Logger.getLogger(HarvestThread.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(HarvestThread.class); protected UUID collectionId; protected CollectionService collectionService = ContentServiceFactory.getInstance().getCollectionService(); protected HarvestedCollectionService harvestedCollectionService = 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 4593f10592..4e78729105 100644 --- a/dspace-api/src/main/java/org/dspace/harvest/OAIHarvester.java +++ b/dspace-api/src/main/java/org/dspace/harvest/OAIHarvester.java @@ -31,8 +31,8 @@ import ORG.oclc.oai.harvester2.verb.Identify; import ORG.oclc.oai.harvester2.verb.ListIdentifiers; import ORG.oclc.oai.harvester2.verb.ListMetadataFormats; import ORG.oclc.oai.harvester2.verb.ListRecords; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Bitstream; import org.dspace.content.BitstreamFormat; @@ -88,7 +88,7 @@ public class OAIHarvester { /** * log4j category */ - private static Logger log = Logger.getLogger(OAIHarvester.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(OAIHarvester.class); private static final Namespace ATOM_NS = Namespace.getNamespace("http://www.w3.org/2005/Atom"); private static final Namespace ORE_NS = Namespace.getNamespace("http://www.openarchives.org/ore/terms/"); diff --git a/dspace-api/src/main/java/org/dspace/health/Check.java b/dspace-api/src/main/java/org/dspace/health/Check.java index c18e09e817..40f29c15f7 100644 --- a/dspace-api/src/main/java/org/dspace/health/Check.java +++ b/dspace-api/src/main/java/org/dspace/health/Check.java @@ -7,7 +7,7 @@ */ package org.dspace.health; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; /** * Abstract check interface. @@ -17,7 +17,7 @@ import org.apache.log4j.Logger; public abstract class Check { - protected static Logger log = Logger.getLogger(Check.class); + protected static Logger log = org.apache.logging.log4j.LogManager.getLogger(Check.class); long took_ = -1L; String report_ = null; private String errors_ = ""; diff --git a/dspace-api/src/main/java/org/dspace/health/Report.java b/dspace-api/src/main/java/org/dspace/health/Report.java index 9285898220..651d3ac1d7 100644 --- a/dspace-api/src/main/java/org/dspace/health/Report.java +++ b/dspace-api/src/main/java/org/dspace/health/Report.java @@ -20,8 +20,8 @@ import org.apache.commons.cli.HelpFormatter; import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; import org.apache.commons.cli.PosixParser; -import org.apache.commons.lang.exception.ExceptionUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.exception.ExceptionUtils; +import org.apache.logging.log4j.Logger; import org.dspace.core.ConfigurationManager; import org.dspace.core.Email; import org.dspace.core.factory.CoreServiceFactory; @@ -33,7 +33,7 @@ import org.dspace.services.factory.DSpaceServicesFactory; */ public class Report { - private static Logger log = Logger.getLogger(Report.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(Report.class); public static final String EMAIL_PATH = "config/emails/healthcheck"; // store the individual check reports private StringBuilder summary_; diff --git a/dspace-api/src/main/java/org/dspace/identifier/DOIIdentifierProvider.java b/dspace-api/src/main/java/org/dspace/identifier/DOIIdentifierProvider.java index 31d9efa36e..46bc317d13 100644 --- a/dspace-api/src/main/java/org/dspace/identifier/DOIIdentifierProvider.java +++ b/dspace-api/src/main/java/org/dspace/identifier/DOIIdentifierProvider.java @@ -13,7 +13,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import org.apache.commons.lang.ObjectUtils; +import org.apache.commons.lang3.ObjectUtils; import org.dspace.authorize.AuthorizeException; import org.dspace.content.DSpaceObject; import org.dspace.content.Item; diff --git a/dspace-api/src/main/java/org/dspace/identifier/HandleIdentifierProvider.java b/dspace-api/src/main/java/org/dspace/identifier/HandleIdentifierProvider.java index a91e6d06cd..9e34fd94da 100644 --- a/dspace-api/src/main/java/org/dspace/identifier/HandleIdentifierProvider.java +++ b/dspace-api/src/main/java/org/dspace/identifier/HandleIdentifierProvider.java @@ -11,11 +11,11 @@ import java.io.IOException; import java.sql.SQLException; import java.util.List; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.DSpaceObject; import org.dspace.content.Item; -import org.dspace.content.MetadataSchema; +import org.dspace.content.MetadataSchemaEnum; import org.dspace.content.MetadataValue; import org.dspace.content.service.ItemService; import org.dspace.core.ConfigurationManager; @@ -38,7 +38,7 @@ public class HandleIdentifierProvider extends IdentifierProvider { /** * log4j category */ - private static Logger log = Logger.getLogger(HandleIdentifierProvider.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(HandleIdentifierProvider.class); /** * Prefix registered to no one @@ -228,14 +228,15 @@ public class HandleIdentifierProvider extends IdentifierProvider { // First check that identifier doesn't already exist. boolean identifierExists = false; List identifiers = itemService - .getMetadata(item, MetadataSchema.DC_SCHEMA, "identifier", "uri", Item.ANY); + .getMetadata(item, MetadataSchemaEnum.DC.getName(), "identifier", "uri", Item.ANY); for (MetadataValue identifier : identifiers) { if (handleref.equals(identifier.getValue())) { identifierExists = true; } } if (!identifierExists) { - itemService.addMetadata(context, item, MetadataSchema.DC_SCHEMA, "identifier", "uri", null, handleref); + itemService.addMetadata(context, item, MetadataSchemaEnum.DC.getName(), + "identifier", "uri", null, handleref); } } } diff --git a/dspace-api/src/main/java/org/dspace/identifier/IdentifierServiceImpl.java b/dspace-api/src/main/java/org/dspace/identifier/IdentifierServiceImpl.java index 4cfd365fc2..17ab949cfe 100644 --- a/dspace-api/src/main/java/org/dspace/identifier/IdentifierServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/identifier/IdentifierServiceImpl.java @@ -11,8 +11,8 @@ import java.sql.SQLException; import java.util.ArrayList; import java.util.List; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.DSpaceObject; import org.dspace.content.factory.ContentServiceFactory; @@ -36,7 +36,7 @@ public class IdentifierServiceImpl implements IdentifierService { /** * log4j category */ - private static Logger log = Logger.getLogger(IdentifierServiceImpl.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(IdentifierServiceImpl.class); @Autowired(required = true) protected ContentServiceFactory contentServiceFactory; diff --git a/dspace-api/src/main/java/org/dspace/identifier/VersionedDOIIdentifierProvider.java b/dspace-api/src/main/java/org/dspace/identifier/VersionedDOIIdentifierProvider.java index 777fa4811f..a2045acf26 100644 --- a/dspace-api/src/main/java/org/dspace/identifier/VersionedDOIIdentifierProvider.java +++ b/dspace-api/src/main/java/org/dspace/identifier/VersionedDOIIdentifierProvider.java @@ -11,8 +11,8 @@ import java.sql.SQLException; import java.util.ArrayList; import java.util.List; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.DSpaceObject; import org.dspace.content.Item; @@ -36,7 +36,7 @@ public class VersionedDOIIdentifierProvider extends DOIIdentifierProvider { /** * log4j category */ - private static Logger log = Logger.getLogger(VersionedDOIIdentifierProvider.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(VersionedDOIIdentifierProvider.class); protected DOIConnector connector; diff --git a/dspace-api/src/main/java/org/dspace/identifier/VersionedHandleIdentifierProvider.java b/dspace-api/src/main/java/org/dspace/identifier/VersionedHandleIdentifierProvider.java index da7f1d7882..801b13be15 100644 --- a/dspace-api/src/main/java/org/dspace/identifier/VersionedHandleIdentifierProvider.java +++ b/dspace-api/src/main/java/org/dspace/identifier/VersionedHandleIdentifierProvider.java @@ -15,11 +15,11 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.DSpaceObject; import org.dspace.content.Item; -import org.dspace.content.MetadataSchema; +import org.dspace.content.MetadataSchemaEnum; import org.dspace.content.MetadataValue; import org.dspace.content.service.ItemService; import org.dspace.core.ConfigurationManager; @@ -46,7 +46,7 @@ public class VersionedHandleIdentifierProvider extends IdentifierProvider { /** * log4j category */ - private static Logger log = Logger.getLogger(VersionedHandleIdentifierProvider.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(VersionedHandleIdentifierProvider.class); /** * Prefix registered to no one @@ -417,9 +417,9 @@ public class VersionedHandleIdentifierProvider extends IdentifierProvider { // load all identifiers, clear the metadata field, re add all // identifiers which are not from type handle and add the new handle. List identifiers = itemService.getMetadata(item, - MetadataSchema.DC_SCHEMA, "identifier", "uri", + MetadataSchemaEnum.DC.getName(), "identifier", "uri", Item.ANY); - itemService.clearMetadata(context, item, MetadataSchema.DC_SCHEMA, + itemService.clearMetadata(context, item, MetadataSchemaEnum.DC.getName(), "identifier", "uri", Item.ANY); for (MetadataValue identifier : identifiers) { if (this.supports(identifier.getValue())) { @@ -439,7 +439,8 @@ public class VersionedHandleIdentifierProvider extends IdentifierProvider { // Add handle as identifier.uri DC value. if (StringUtils.isNotBlank(handleref)) { - itemService.addMetadata(context, item, MetadataSchema.DC_SCHEMA, "identifier", "uri", null, handleref); + itemService.addMetadata(context, item, MetadataSchemaEnum.DC.getName(), + "identifier", "uri", null, handleref); } itemService.update(context, item); } diff --git a/dspace-api/src/main/java/org/dspace/identifier/VersionedHandleIdentifierProviderWithCanonicalHandles.java b/dspace-api/src/main/java/org/dspace/identifier/VersionedHandleIdentifierProviderWithCanonicalHandles.java index 72cbf7d4e7..d644c87367 100644 --- a/dspace-api/src/main/java/org/dspace/identifier/VersionedHandleIdentifierProviderWithCanonicalHandles.java +++ b/dspace-api/src/main/java/org/dspace/identifier/VersionedHandleIdentifierProviderWithCanonicalHandles.java @@ -12,12 +12,12 @@ import java.sql.SQLException; import java.util.Date; import java.util.List; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.DSpaceObject; import org.dspace.content.Item; -import org.dspace.content.MetadataSchema; +import org.dspace.content.MetadataSchemaEnum; import org.dspace.content.MetadataValue; import org.dspace.content.service.ItemService; import org.dspace.core.ConfigurationManager; @@ -43,7 +43,8 @@ public class VersionedHandleIdentifierProviderWithCanonicalHandles extends Ident /** * log4j category */ - private static Logger log = Logger.getLogger(VersionedHandleIdentifierProviderWithCanonicalHandles.class); + private static Logger log = + org.apache.logging.log4j.LogManager.getLogger(VersionedHandleIdentifierProviderWithCanonicalHandles.class); /** * Prefix registered to no one @@ -492,8 +493,8 @@ public class VersionedHandleIdentifierProviderWithCanonicalHandles extends Ident // identifiers which are not from type handle and add the new handle. String handleref = handleService.getCanonicalForm(handle); List identifiers = itemService - .getMetadata(item, MetadataSchema.DC_SCHEMA, "identifier", "uri", Item.ANY); - itemService.clearMetadata(context, item, MetadataSchema.DC_SCHEMA, "identifier", "uri", Item.ANY); + .getMetadata(item, MetadataSchemaEnum.DC.getName(), "identifier", "uri", Item.ANY); + itemService.clearMetadata(context, item, MetadataSchemaEnum.DC.getName(), "identifier", "uri", Item.ANY); for (MetadataValue identifier : identifiers) { if (this.supports(identifier.getValue())) { // ignore handles @@ -508,7 +509,8 @@ public class VersionedHandleIdentifierProviderWithCanonicalHandles extends Ident identifier.getConfidence()); } if (!StringUtils.isEmpty(handleref)) { - itemService.addMetadata(context, item, MetadataSchema.DC_SCHEMA, "identifier", "uri", null, handleref); + itemService.addMetadata(context, item, MetadataSchemaEnum.DC.getName(), + "identifier", "uri", null, handleref); } itemService.update(context, item); } diff --git a/dspace-api/src/main/java/org/dspace/identifier/doi/DOIConsumer.java b/dspace-api/src/main/java/org/dspace/identifier/doi/DOIConsumer.java index 8ad93e6e56..654d275d87 100644 --- a/dspace-api/src/main/java/org/dspace/identifier/doi/DOIConsumer.java +++ b/dspace-api/src/main/java/org/dspace/identifier/doi/DOIConsumer.java @@ -7,7 +7,7 @@ */ package org.dspace.identifier.doi; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.DSpaceObject; import org.dspace.content.Item; import org.dspace.content.factory.ContentServiceFactory; @@ -28,7 +28,7 @@ public class DOIConsumer implements Consumer { /** * log4j logger */ - private static Logger log = Logger.getLogger(DOIConsumer.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(DOIConsumer.class); @Override public void initialize() throws Exception { diff --git a/dspace-api/src/main/java/org/dspace/identifier/doi/DOIOrganiser.java b/dspace-api/src/main/java/org/dspace/identifier/doi/DOIOrganiser.java index ed59eb3cdf..37fb18a5e4 100644 --- a/dspace-api/src/main/java/org/dspace/identifier/doi/DOIOrganiser.java +++ b/dspace-api/src/main/java/org/dspace/identifier/doi/DOIOrganiser.java @@ -26,7 +26,7 @@ import org.apache.commons.cli.OptionBuilder; import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; import org.apache.commons.cli.PosixParser; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.DSpaceObject; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.ItemService; @@ -51,7 +51,7 @@ import org.dspace.utils.DSpace; */ public class DOIOrganiser { - private static final Logger LOG = Logger.getLogger(DOIOrganiser.class); + private static final Logger LOG = org.apache.logging.log4j.LogManager.getLogger(DOIOrganiser.class); private DOIIdentifierProvider provider; private Context context; diff --git a/dspace-api/src/main/java/org/dspace/importer/external/metadatamapping/AbstractMetadataFieldMapping.java b/dspace-api/src/main/java/org/dspace/importer/external/metadatamapping/AbstractMetadataFieldMapping.java index 1813d28659..3ce45d6048 100644 --- a/dspace-api/src/main/java/org/dspace/importer/external/metadatamapping/AbstractMetadataFieldMapping.java +++ b/dspace-api/src/main/java/org/dspace/importer/external/metadatamapping/AbstractMetadataFieldMapping.java @@ -12,7 +12,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.importer.external.metadatamapping.contributor.MetadataContributor; import org.dspace.importer.external.metadatamapping.transform.MetadataProcessorService; @@ -30,7 +30,7 @@ public abstract class AbstractMetadataFieldMapping /** * log4j logger */ - private static Logger log = Logger.getLogger(AbstractMetadataFieldMapping.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(AbstractMetadataFieldMapping.class); /* A map containing what processing has to be done on a given metadataFieldConfig. * The processing of a value is used to determine the actual value that will be returned used. diff --git a/dspace-api/src/main/java/org/dspace/importer/external/metadatamapping/transform/AuthorMetadataProcessorService.java b/dspace-api/src/main/java/org/dspace/importer/external/metadatamapping/transform/AuthorMetadataProcessorService.java index 948075d9dc..5b814510ee 100644 --- a/dspace-api/src/main/java/org/dspace/importer/external/metadatamapping/transform/AuthorMetadataProcessorService.java +++ b/dspace-api/src/main/java/org/dspace/importer/external/metadatamapping/transform/AuthorMetadataProcessorService.java @@ -7,7 +7,7 @@ */ package org.dspace.importer.external.metadatamapping.transform; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; /** * Removes the last point from an author name. diff --git a/dspace-api/src/main/java/org/dspace/importer/external/pubmed/metadatamapping/contributor/PubmedDateMetadatumContributor.java b/dspace-api/src/main/java/org/dspace/importer/external/pubmed/metadatamapping/contributor/PubmedDateMetadatumContributor.java index dea509f470..fe8af76831 100644 --- a/dspace-api/src/main/java/org/dspace/importer/external/pubmed/metadatamapping/contributor/PubmedDateMetadatumContributor.java +++ b/dspace-api/src/main/java/org/dspace/importer/external/pubmed/metadatamapping/contributor/PubmedDateMetadatumContributor.java @@ -15,7 +15,7 @@ import java.util.Date; import java.util.LinkedList; import java.util.List; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.DCDate; import org.dspace.importer.external.metadatamapping.MetadataFieldConfig; import org.dspace.importer.external.metadatamapping.MetadataFieldMapping; @@ -30,7 +30,7 @@ import org.springframework.beans.factory.annotation.Required; * @author Philip Vissenaekens (philip at atmire dot com) */ public class PubmedDateMetadatumContributor implements MetadataContributor { - Logger log = Logger.getLogger(PubmedDateMetadatumContributor.class); + Logger log = org.apache.logging.log4j.LogManager.getLogger(PubmedDateMetadatumContributor.class); private MetadataFieldMapping> metadataFieldMapping; diff --git a/dspace-api/src/main/java/org/dspace/importer/external/pubmed/metadatamapping/contributor/PubmedLanguageMetadatumContributor.java b/dspace-api/src/main/java/org/dspace/importer/external/pubmed/metadatamapping/contributor/PubmedLanguageMetadatumContributor.java index 82da062036..18a706a4ed 100644 --- a/dspace-api/src/main/java/org/dspace/importer/external/pubmed/metadatamapping/contributor/PubmedLanguageMetadatumContributor.java +++ b/dspace-api/src/main/java/org/dspace/importer/external/pubmed/metadatamapping/contributor/PubmedLanguageMetadatumContributor.java @@ -14,7 +14,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Locale; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.importer.external.metadatamapping.MetadataFieldConfig; import org.dspace.importer.external.metadatamapping.MetadataFieldMapping; import org.dspace.importer.external.metadatamapping.MetadatumDTO; @@ -27,7 +27,7 @@ import org.dspace.importer.external.metadatamapping.contributor.MetadataContribu * @author Philip Vissenaekens (philip at atmire dot com) */ public class PubmedLanguageMetadatumContributor implements MetadataContributor { - Logger log = Logger.getLogger(PubmedDateMetadatumContributor.class); + Logger log = org.apache.logging.log4j.LogManager.getLogger(PubmedDateMetadatumContributor.class); private MetadataFieldMapping> metadataFieldMapping; private HashMap iso3toIso2; diff --git a/dspace-api/src/main/java/org/dspace/importer/external/service/ImportService.java b/dspace-api/src/main/java/org/dspace/importer/external/service/ImportService.java index 74f6b26a77..87c2bd0029 100644 --- a/dspace-api/src/main/java/org/dspace/importer/external/service/ImportService.java +++ b/dspace-api/src/main/java/org/dspace/importer/external/service/ImportService.java @@ -15,7 +15,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.Item; import org.dspace.importer.external.datamodel.ImportRecord; import org.dspace.importer.external.datamodel.Query; @@ -36,7 +36,7 @@ import org.springframework.beans.factory.annotation.Autowired; public class ImportService implements Destroyable { private HashMap importSources = new HashMap<>(); - Logger log = Logger.getLogger(ImportService.class); + Logger log = org.apache.logging.log4j.LogManager.getLogger(ImportService.class); /** * Constructs an empty ImportService class object diff --git a/dspace-api/src/main/java/org/dspace/importer/external/service/components/AbstractRemoteMetadataSource.java b/dspace-api/src/main/java/org/dspace/importer/external/service/components/AbstractRemoteMetadataSource.java index a0340236c5..38632a1a2b 100644 --- a/dspace-api/src/main/java/org/dspace/importer/external/service/components/AbstractRemoteMetadataSource.java +++ b/dspace-api/src/main/java/org/dspace/importer/external/service/components/AbstractRemoteMetadataSource.java @@ -16,7 +16,7 @@ import java.util.concurrent.Callable; import java.util.concurrent.locks.ReentrantLock; import javax.annotation.Resource; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.importer.external.exception.MetadataSourceException; import org.dspace.importer.external.exception.SourceExceptionHandler; @@ -136,7 +136,7 @@ public abstract class AbstractRemoteMetadataSource { /** * log4j logger */ - private static Logger log = Logger.getLogger(AbstractRemoteMetadataSource.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(AbstractRemoteMetadataSource.class); /** * Command pattern implementation. the callable.call method will be retried diff --git a/dspace-api/src/main/java/org/dspace/license/CCLookup.java b/dspace-api/src/main/java/org/dspace/license/CCLookup.java index 6ddd31a77d..c86aa78301 100644 --- a/dspace-api/src/main/java/org/dspace/license/CCLookup.java +++ b/dspace-api/src/main/java/org/dspace/license/CCLookup.java @@ -21,7 +21,7 @@ import java.util.List; import java.util.Map; import java.util.NoSuchElementException; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.license.factory.LicenseServiceFactory; import org.dspace.license.service.CreativeCommonsService; import org.dspace.services.ConfigurationService; @@ -45,7 +45,7 @@ public class CCLookup { /** * log4j logger */ - private static Logger log = Logger.getLogger(CCLookup.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(CCLookup.class); private String cc_root; private String jurisdiction; diff --git a/dspace-api/src/main/java/org/dspace/license/CreativeCommonsServiceImpl.java b/dspace-api/src/main/java/org/dspace/license/CreativeCommonsServiceImpl.java index c88c7d8b4b..384b82ddc3 100644 --- a/dspace-api/src/main/java/org/dspace/license/CreativeCommonsServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/license/CreativeCommonsServiceImpl.java @@ -21,8 +21,8 @@ import javax.xml.transform.TransformerFactory; import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamSource; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Bitstream; import org.dspace.content.BitstreamFormat; @@ -46,7 +46,7 @@ public class CreativeCommonsServiceImpl implements CreativeCommonsService, Initi /** * log4j category */ - private static Logger log = Logger.getLogger(CreativeCommonsServiceImpl.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(CreativeCommonsServiceImpl.class); /** * The Bundle Name diff --git a/dspace-api/src/main/java/org/dspace/license/LicenseCleanup.java b/dspace-api/src/main/java/org/dspace/license/LicenseCleanup.java index 30d7147079..55eeb8d314 100644 --- a/dspace-api/src/main/java/org/dspace/license/LicenseCleanup.java +++ b/dspace-api/src/main/java/org/dspace/license/LicenseCleanup.java @@ -26,7 +26,7 @@ import javax.xml.transform.TransformerFactory; import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamSource; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Bitstream; import org.dspace.content.Bundle; @@ -44,7 +44,7 @@ import org.dspace.core.Context; */ public class LicenseCleanup { - private static final Logger log = Logger.getLogger(LicenseCleanup.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(LicenseCleanup.class); protected static final Templates templates; diff --git a/dspace-api/src/main/java/org/dspace/rdf/RDFConsumer.java b/dspace-api/src/main/java/org/dspace/rdf/RDFConsumer.java index f127d7ff48..76ae0cd2d2 100644 --- a/dspace-api/src/main/java/org/dspace/rdf/RDFConsumer.java +++ b/dspace-api/src/main/java/org/dspace/rdf/RDFConsumer.java @@ -17,7 +17,7 @@ import java.util.NoSuchElementException; import java.util.UUID; import com.hp.hpl.jena.rdf.model.Model; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Bitstream; import org.dspace.content.Bundle; @@ -40,7 +40,7 @@ import org.dspace.workflow.factory.WorkflowServiceFactory; * @author Pascal-Nicolas Becker (dspace -at- pascal -hyphen- becker -dot- de) */ public class RDFConsumer implements Consumer { - private static final Logger log = Logger.getLogger(RDFConsumer.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(RDFConsumer.class); protected Deque toConvert; protected Deque toDelete; diff --git a/dspace-api/src/main/java/org/dspace/rdf/RDFUtil.java b/dspace-api/src/main/java/org/dspace/rdf/RDFUtil.java index 1280f18cd9..03ae589c62 100644 --- a/dspace-api/src/main/java/org/dspace/rdf/RDFUtil.java +++ b/dspace-api/src/main/java/org/dspace/rdf/RDFUtil.java @@ -13,8 +13,8 @@ import java.util.List; import java.util.UUID; import com.hp.hpl.jena.rdf.model.Model; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.authorize.factory.AuthorizeServiceFactory; import org.dspace.authorize.service.AuthorizeService; @@ -31,7 +31,7 @@ import org.dspace.services.factory.DSpaceServicesFactory; * @author Pascal-Nicolas Becker (dspace -at- pascal -hyphen- becker -dot- de) */ public class RDFUtil { - private static final Logger log = Logger.getLogger(RDFUtil.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(RDFUtil.class); private static final AuthorizeService authorizeService = AuthorizeServiceFactory.getInstance() .getAuthorizeService(); diff --git a/dspace-api/src/main/java/org/dspace/rdf/RDFizer.java b/dspace-api/src/main/java/org/dspace/rdf/RDFizer.java index a6f8804756..834ec15d4a 100644 --- a/dspace-api/src/main/java/org/dspace/rdf/RDFizer.java +++ b/dspace-api/src/main/java/org/dspace/rdf/RDFizer.java @@ -26,7 +26,7 @@ import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; import org.apache.commons.cli.PosixParser; import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Collection; import org.dspace.content.Community; @@ -54,7 +54,7 @@ import org.dspace.services.factory.DSpaceServicesFactory; */ public class RDFizer { - private static final Logger log = Logger.getLogger(RDFizer.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(RDFizer.class); protected boolean stdout; protected boolean verbose; diff --git a/dspace-api/src/main/java/org/dspace/rdf/conversion/MetadataConverterPlugin.java b/dspace-api/src/main/java/org/dspace/rdf/conversion/MetadataConverterPlugin.java index 5dcd8c2e4a..72ba03d99d 100644 --- a/dspace-api/src/main/java/org/dspace/rdf/conversion/MetadataConverterPlugin.java +++ b/dspace-api/src/main/java/org/dspace/rdf/conversion/MetadataConverterPlugin.java @@ -25,14 +25,15 @@ import com.hp.hpl.jena.reasoner.ValidityReport; import com.hp.hpl.jena.util.FileManager; import com.hp.hpl.jena.util.FileUtils; import com.hp.hpl.jena.vocabulary.RDF; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.app.util.factory.UtilServiceFactory; import org.dspace.authorize.AuthorizeException; import org.dspace.content.DSpaceObject; import org.dspace.content.Item; import org.dspace.content.MetadataField; import org.dspace.content.MetadataSchema; +import org.dspace.content.MetadataSchemaEnum; import org.dspace.content.MetadataValue; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.DSpaceObjectService; @@ -50,7 +51,7 @@ public class MetadataConverterPlugin implements ConverterPlugin { public final static String METADATA_SCHEMA_URL_KEY = "rdf.metadata.schema"; public final static String METADATA_PREFIXES_KEY = "rdf.metadata.prefixes"; - private final static Logger log = Logger.getLogger(MetadataConverterPlugin.class); + private final static Logger log = org.apache.logging.log4j.LogManager.getLogger(MetadataConverterPlugin.class); @Autowired(required = true) protected ConfigurationService configurationService; @@ -133,7 +134,7 @@ public class MetadataConverterPlugin implements ConverterPlugin { } List metadata_values = dsoService - .getMetadata(dso, MetadataSchema.DC_SCHEMA, Item.ANY, Item.ANY, Item.ANY); + .getMetadata(dso, MetadataSchemaEnum.DC.getName(), Item.ANY, Item.ANY, Item.ANY); for (MetadataValue value : metadata_values) { MetadataField metadataField = value.getMetadataField(); MetadataSchema metadataSchema = metadataField.getMetadataSchema(); diff --git a/dspace-api/src/main/java/org/dspace/rdf/conversion/MetadataRDFMapping.java b/dspace-api/src/main/java/org/dspace/rdf/conversion/MetadataRDFMapping.java index 9fdf139197..6286f3b87a 100644 --- a/dspace-api/src/main/java/org/dspace/rdf/conversion/MetadataRDFMapping.java +++ b/dspace-api/src/main/java/org/dspace/rdf/conversion/MetadataRDFMapping.java @@ -22,15 +22,15 @@ import com.hp.hpl.jena.rdf.model.Resource; import com.hp.hpl.jena.rdf.model.Statement; import com.hp.hpl.jena.rdf.model.StmtIterator; import com.hp.hpl.jena.vocabulary.RDF; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; /** * @author Pascal-Nicolas Becker (dspace -at- pascal -hyphen- becker -dot- de) */ public class MetadataRDFMapping { - private static final Logger log = Logger.getLogger(MetadataRDFMapping.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(MetadataRDFMapping.class); protected final String name; protected final Pattern fulfills; diff --git a/dspace-api/src/main/java/org/dspace/rdf/conversion/RDFConverterImpl.java b/dspace-api/src/main/java/org/dspace/rdf/conversion/RDFConverterImpl.java index 382915cacc..93a9b6211d 100644 --- a/dspace-api/src/main/java/org/dspace/rdf/conversion/RDFConverterImpl.java +++ b/dspace-api/src/main/java/org/dspace/rdf/conversion/RDFConverterImpl.java @@ -13,7 +13,7 @@ import java.util.List; import com.hp.hpl.jena.rdf.model.Model; import com.hp.hpl.jena.rdf.model.ModelFactory; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.DSpaceObject; import org.dspace.core.Context; @@ -24,7 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired; * @author Pascal-Nicolas Becker (dspace -at- pascal -hyphen- becker -dot- de) */ public class RDFConverterImpl implements RDFConverter { - private static final Logger log = Logger.getLogger(RDFConverterImpl.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(RDFConverterImpl.class); protected ConfigurationService configurationService; protected List plugins; diff --git a/dspace-api/src/main/java/org/dspace/rdf/conversion/SimpleDSORelationsConverterPlugin.java b/dspace-api/src/main/java/org/dspace/rdf/conversion/SimpleDSORelationsConverterPlugin.java index 96927fc3b2..e5475e5eb4 100644 --- a/dspace-api/src/main/java/org/dspace/rdf/conversion/SimpleDSORelationsConverterPlugin.java +++ b/dspace-api/src/main/java/org/dspace/rdf/conversion/SimpleDSORelationsConverterPlugin.java @@ -18,8 +18,8 @@ import com.hp.hpl.jena.rdf.model.Model; import com.hp.hpl.jena.rdf.model.ModelFactory; import com.hp.hpl.jena.util.FileManager; import com.hp.hpl.jena.util.FileUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.app.util.Util; import org.dspace.content.Bitstream; import org.dspace.content.Bundle; @@ -57,7 +57,8 @@ public class SimpleDSORelationsConverterPlugin public static final String SIMPLE_RELATIONS_ITEM2BITSTREAM_KEY = "rdf.simplerelations.item2bitstream"; - private static final Logger log = Logger.getLogger(SimpleDSORelationsConverterPlugin.class); + private static final Logger log = + org.apache.logging.log4j.LogManager.getLogger(SimpleDSORelationsConverterPlugin.class); @Autowired(required = true) protected BitstreamService bitstreamService; diff --git a/dspace-api/src/main/java/org/dspace/rdf/conversion/StaticDSOConverterPlugin.java b/dspace-api/src/main/java/org/dspace/rdf/conversion/StaticDSOConverterPlugin.java index cf52167325..f86af753e6 100644 --- a/dspace-api/src/main/java/org/dspace/rdf/conversion/StaticDSOConverterPlugin.java +++ b/dspace-api/src/main/java/org/dspace/rdf/conversion/StaticDSOConverterPlugin.java @@ -16,7 +16,7 @@ import com.hp.hpl.jena.rdf.model.Model; import com.hp.hpl.jena.rdf.model.ModelFactory; import com.hp.hpl.jena.util.FileManager; import com.hp.hpl.jena.util.FileUtils; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.DSpaceObject; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.core.Constants; @@ -30,7 +30,7 @@ import org.springframework.beans.factory.annotation.Autowired; */ public class StaticDSOConverterPlugin implements ConverterPlugin { - private static final Logger log = Logger.getLogger(StaticDSOConverterPlugin.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(StaticDSOConverterPlugin.class); public static final String CONSTANT_DATA_FILENAME_KEY_PREFIX = "rdf.constant.data."; public static final String CONSTANT_DATA_GENERAL_KEY_SUFFIX = "GENERAL"; diff --git a/dspace-api/src/main/java/org/dspace/rdf/factory/RDFFactoryImpl.java b/dspace-api/src/main/java/org/dspace/rdf/factory/RDFFactoryImpl.java index 2f6b66bda6..2abcd41a1b 100644 --- a/dspace-api/src/main/java/org/dspace/rdf/factory/RDFFactoryImpl.java +++ b/dspace-api/src/main/java/org/dspace/rdf/factory/RDFFactoryImpl.java @@ -8,7 +8,7 @@ package org.dspace.rdf.factory; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.rdf.conversion.RDFConverter; import org.dspace.rdf.storage.RDFStorage; import org.dspace.rdf.storage.URIGenerator; @@ -23,7 +23,7 @@ public class RDFFactoryImpl extends RDFFactory { // by type here. So we use setters and properties in Spring configuration // instead. - private static final Logger log = Logger.getLogger(RDFFactoryImpl.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(RDFFactoryImpl.class); private RDFStorage storage; private URIGenerator generator; diff --git a/dspace-api/src/main/java/org/dspace/rdf/negotiation/MediaRange.java b/dspace-api/src/main/java/org/dspace/rdf/negotiation/MediaRange.java index f0cd45b8fa..6b2caa598d 100644 --- a/dspace-api/src/main/java/org/dspace/rdf/negotiation/MediaRange.java +++ b/dspace-api/src/main/java/org/dspace/rdf/negotiation/MediaRange.java @@ -13,8 +13,8 @@ import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; /** * @author Pascal-Nicolas Becker (dspace -at- pascal -hyphen- becker -dot- de) @@ -62,7 +62,7 @@ public class MediaRange { public static final String mediaRangeRegex = "(?:(" + token + ")/(" + token + "?)" + "(" + nonQualityParam + "*)" + qualityParam + "?(" + nonQualityParam + "*))"; - private final static Logger log = Logger.getLogger(MediaRange.class); + private final static Logger log = org.apache.logging.log4j.LogManager.getLogger(MediaRange.class); protected final String type; protected final String subtype; diff --git a/dspace-api/src/main/java/org/dspace/rdf/negotiation/NegotiationFilter.java b/dspace-api/src/main/java/org/dspace/rdf/negotiation/NegotiationFilter.java index ed8840bb7a..998f57ca4f 100644 --- a/dspace-api/src/main/java/org/dspace/rdf/negotiation/NegotiationFilter.java +++ b/dspace-api/src/main/java/org/dspace/rdf/negotiation/NegotiationFilter.java @@ -19,7 +19,7 @@ import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.rdf.RDFUtil; import org.dspace.services.factory.DSpaceServicesFactory; @@ -29,7 +29,7 @@ import org.dspace.services.factory.DSpaceServicesFactory; public class NegotiationFilter implements Filter { public static final String ACCEPT_HEADER_NAME = "Accept"; - private static final Logger log = Logger.getLogger(NegotiationFilter.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(NegotiationFilter.class); @Override public void init(FilterConfig filterConfig) throws ServletException { diff --git a/dspace-api/src/main/java/org/dspace/rdf/negotiation/Negotiator.java b/dspace-api/src/main/java/org/dspace/rdf/negotiation/Negotiator.java index fe7a0029a4..dbf703e8de 100644 --- a/dspace-api/src/main/java/org/dspace/rdf/negotiation/Negotiator.java +++ b/dspace-api/src/main/java/org/dspace/rdf/negotiation/Negotiator.java @@ -14,8 +14,8 @@ import java.util.Comparator; import java.util.Iterator; import javax.servlet.http.HttpServletResponse; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.rdf.RDFUtil; import org.dspace.services.factory.DSpaceServicesFactory; @@ -34,7 +34,7 @@ public class Negotiator { public static final String DEFAULT_LANG = "html"; - private static final Logger log = Logger.getLogger(Negotiator.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(Negotiator.class); /** * Default constructor diff --git a/dspace-api/src/main/java/org/dspace/rdf/storage/DOIURIGenerator.java b/dspace-api/src/main/java/org/dspace/rdf/storage/DOIURIGenerator.java index 935a4ed610..54071ab8a2 100644 --- a/dspace-api/src/main/java/org/dspace/rdf/storage/DOIURIGenerator.java +++ b/dspace-api/src/main/java/org/dspace/rdf/storage/DOIURIGenerator.java @@ -12,7 +12,7 @@ import java.sql.SQLException; import java.util.List; import java.util.UUID; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.DSpaceObject; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.core.Constants; @@ -26,7 +26,7 @@ import org.springframework.beans.factory.annotation.Required; * @author pbecker */ public class DOIURIGenerator implements URIGenerator { - private static final Logger log = Logger.getLogger(DOIURIGenerator.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(DOIURIGenerator.class); protected static URIGenerator fallback; diff --git a/dspace-api/src/main/java/org/dspace/rdf/storage/HandleURIGenerator.java b/dspace-api/src/main/java/org/dspace/rdf/storage/HandleURIGenerator.java index 7ed4c9f552..3353fa35ef 100644 --- a/dspace-api/src/main/java/org/dspace/rdf/storage/HandleURIGenerator.java +++ b/dspace-api/src/main/java/org/dspace/rdf/storage/HandleURIGenerator.java @@ -12,8 +12,8 @@ import java.sql.SQLException; import java.util.List; import java.util.UUID; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.content.DSpaceObject; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.SiteService; @@ -26,7 +26,7 @@ import org.springframework.beans.factory.annotation.Autowired; * @author Pascal-Nicolas Becker (dspace -at- pascal -hyphen- becker -dot- de) */ public class HandleURIGenerator implements URIGenerator { - private static final Logger log = Logger.getLogger(HandleURIGenerator.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(HandleURIGenerator.class); @Autowired(required = true) protected SiteService siteService; diff --git a/dspace-api/src/main/java/org/dspace/rdf/storage/LocalURIGenerator.java b/dspace-api/src/main/java/org/dspace/rdf/storage/LocalURIGenerator.java index 2aa9209ac1..b173010bd4 100644 --- a/dspace-api/src/main/java/org/dspace/rdf/storage/LocalURIGenerator.java +++ b/dspace-api/src/main/java/org/dspace/rdf/storage/LocalURIGenerator.java @@ -12,8 +12,8 @@ import java.sql.SQLException; import java.util.List; import java.util.UUID; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.content.DSpaceObject; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.SiteService; @@ -27,7 +27,7 @@ import org.springframework.beans.factory.annotation.Autowired; * @author Pascal-Nicolas Becker (dspace -at- pascal -hyphen- becker -dot- de) */ public class LocalURIGenerator implements URIGenerator { - private static final Logger log = Logger.getLogger(LocalURIGenerator.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(LocalURIGenerator.class); @Autowired(required = true) protected SiteService siteService; diff --git a/dspace-api/src/main/java/org/dspace/rdf/storage/RDFStorageImpl.java b/dspace-api/src/main/java/org/dspace/rdf/storage/RDFStorageImpl.java index 5656f409d7..fd84db5d5f 100644 --- a/dspace-api/src/main/java/org/dspace/rdf/storage/RDFStorageImpl.java +++ b/dspace-api/src/main/java/org/dspace/rdf/storage/RDFStorageImpl.java @@ -25,12 +25,12 @@ import com.hp.hpl.jena.rdf.model.Model; import com.hp.hpl.jena.sparql.core.DatasetGraph; import com.hp.hpl.jena.update.GraphStore; import com.hp.hpl.jena.update.GraphStoreFactory; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.jena.atlas.web.auth.HttpAuthenticator; import org.apache.jena.atlas.web.auth.SimpleAuthenticator; import org.apache.jena.web.DatasetGraphAccessor; import org.apache.jena.web.DatasetGraphAccessorHTTP; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.rdf.RDFUtil; import org.dspace.services.ConfigurationService; import org.springframework.beans.factory.annotation.Autowired; @@ -40,7 +40,7 @@ import org.springframework.beans.factory.annotation.Autowired; */ public class RDFStorageImpl implements RDFStorage { - private static final Logger log = Logger.getLogger(RDFStorageImpl.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(RDFStorageImpl.class); @Autowired(required = true) protected ConfigurationService configurationService; diff --git a/dspace-api/src/main/java/org/dspace/search/Harvest.java b/dspace-api/src/main/java/org/dspace/search/Harvest.java index 083a32d89d..677a760452 100644 --- a/dspace-api/src/main/java/org/dspace/search/Harvest.java +++ b/dspace-api/src/main/java/org/dspace/search/Harvest.java @@ -14,7 +14,7 @@ import java.util.Iterator; import java.util.LinkedList; import java.util.List; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.factory.AuthorizeServiceFactory; import org.dspace.authorize.service.AuthorizeService; import org.dspace.content.Collection; @@ -46,7 +46,7 @@ public class Harvest { /** * log4j logger */ - private static final Logger log = Logger.getLogger(Harvest.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(Harvest.class); protected static final AuthorizeService authorizeService = AuthorizeServiceFactory.getInstance() .getAuthorizeService(); diff --git a/dspace-api/src/main/java/org/dspace/service/ClientInfoService.java b/dspace-api/src/main/java/org/dspace/service/ClientInfoService.java new file mode 100644 index 0000000000..68fb5b7f43 --- /dev/null +++ b/dspace-api/src/main/java/org/dspace/service/ClientInfoService.java @@ -0,0 +1,37 @@ +/** + * The contents of this file are subject to the license and copyright + * detailed in the LICENSE and NOTICE files at the root of the source + * tree and available online at + * + * http://www.dspace.org/license/ + */ +package org.dspace.service; + +import javax.servlet.http.HttpServletRequest; + +/** + * Service that can be used to retrieve information about DSpace clients + */ +public interface ClientInfoService { + + /** + * Get the client IP of this request taking into account the X-Forwarded-For header and the "useProxies" setting + * @param request The client HTTP request + * @return The IP address of the originating client + */ + String getClientIp(HttpServletRequest request); + + /** + * Get the client IP of this request taking into account the X-Forwarded-For header and the "useProxies" setting + * @param remoteIp the remote address of the current request + * @param xForwardedForHeaderValue The value of the X-Forwarded-For header + * @return The IP address of the originating client + */ + String getClientIp(String remoteIp, String xForwardedForHeaderValue); + + /** + * Does DSpace take into account HTTP proxy headers or not + * @return true if this is the case, false otherwise + */ + boolean isUseProxiesEnabled(); +} diff --git a/dspace-api/src/main/java/org/dspace/service/impl/ClientInfoServiceImpl.java b/dspace-api/src/main/java/org/dspace/service/impl/ClientInfoServiceImpl.java new file mode 100644 index 0000000000..76874908d7 --- /dev/null +++ b/dspace-api/src/main/java/org/dspace/service/impl/ClientInfoServiceImpl.java @@ -0,0 +1,131 @@ +/** + * The contents of this file are subject to the license and copyright + * detailed in the LICENSE and NOTICE files at the root of the source + * tree and available online at + * + * http://www.dspace.org/license/ + */ +package org.dspace.service.impl; + +import javax.servlet.http.HttpServletRequest; + +import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang3.StringUtils; +import org.dspace.service.ClientInfoService; +import org.dspace.services.ConfigurationService; +import org.dspace.statistics.util.IPTable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * Implementation of {@link ClientInfoService} that can provide information on DSpace client requests + * + * @author tom dot desair at gmail dot com + */ +public class ClientInfoServiceImpl implements ClientInfoService { + + private static final String X_FORWARDED_FOR_HEADER = "X-Forwarded-For"; + + private static final Logger log = LoggerFactory.getLogger(ClientInfoServiceImpl.class); + + private Boolean useProxiesEnabled; + + private ConfigurationService configurationService; + + /** + * Sparse HashTable structure to hold IP address ranges of trusted proxies + */ + private IPTable trustedProxies; + + @Autowired(required = true) + public ClientInfoServiceImpl(ConfigurationService configurationService) { + this.configurationService = configurationService; + this.trustedProxies = parseTrustedProxyRanges( + configurationService.getArrayProperty("proxies.trusted.ipranges")); + } + + @Override + public String getClientIp(HttpServletRequest request) { + return getClientIp(request.getRemoteAddr(), request.getHeader(X_FORWARDED_FOR_HEADER)); + } + + @Override + public String getClientIp(String remoteIp, String xForwardedForHeaderValue) { + String ip = remoteIp; + + if (isUseProxiesEnabled()) { + String xForwardedForIp = getXForwardedForIpValue(remoteIp, xForwardedForHeaderValue); + + if (StringUtils.isNotBlank(xForwardedForIp) && isRequestFromTrustedProxy(ip)) { + ip = xForwardedForIp; + } + + } else if (StringUtils.isNotBlank(xForwardedForHeaderValue)) { + log.warn( + "X-Forwarded-For header detected but useProxiesEnabled is not enabled. " + + "If your dspace is behind a proxy set it to true"); + } + + return ip; + } + + @Override + public boolean isUseProxiesEnabled() { + if (useProxiesEnabled == null) { + useProxiesEnabled = configurationService.getBooleanProperty("useProxies", true); + log.info("useProxies=" + useProxiesEnabled); + } + + return useProxiesEnabled; + } + + private IPTable parseTrustedProxyRanges(String[] proxyProperty) { + if (ArrayUtils.isEmpty(proxyProperty)) { + return null; + } else { + //Load all supplied proxy IP ranges into the IP table + IPTable ipTable = new IPTable(); + try { + for (String proxyRange : proxyProperty) { + ipTable.add(proxyRange); + } + } catch (IPTable.IPFormatException e) { + log.error("Property proxies.trusted.ipranges contains an invalid IP range", e); + ipTable = null; + } + + return ipTable; + } + } + + private boolean isRequestFromTrustedProxy(String ipAddress) { + try { + return trustedProxies == null || trustedProxies.contains(ipAddress); + } catch (IPTable.IPFormatException e) { + log.error("Request contains invalid remote address", e); + return false; + } + } + + private String getXForwardedForIpValue(String remoteIp, String xForwardedForValue) { + String ip = null; + + /* This header is a comma delimited list */ + String headerValue = StringUtils.trimToEmpty(xForwardedForValue); + for (String xfip : headerValue.split(",")) { + /* proxy itself will sometime populate this header with the same value in + remote address. ordering in spec is vague, we'll just take the last + not equal to the proxy + */ + if (!StringUtils.equals(remoteIp, xfip) && StringUtils.isNotBlank(xfip) + //if we have trusted proxies, we'll assume that they are not the client IP + && (trustedProxies == null || !isRequestFromTrustedProxy(xfip))) { + + ip = xfip.trim(); + } + } + + return ip; + } +} diff --git a/dspace-api/src/main/java/org/dspace/sort/AbstractTextFilterOFD.java b/dspace-api/src/main/java/org/dspace/sort/AbstractTextFilterOFD.java index ec98ee874a..e1a14cc18c 100644 --- a/dspace-api/src/main/java/org/dspace/sort/AbstractTextFilterOFD.java +++ b/dspace-api/src/main/java/org/dspace/sort/AbstractTextFilterOFD.java @@ -7,7 +7,7 @@ */ package org.dspace.sort; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.text.filter.TextFilter; /** @@ -40,7 +40,7 @@ import org.dspace.text.filter.TextFilter; * @author Graham Triggs */ public abstract class AbstractTextFilterOFD implements OrderFormatDelegate { - private static final Logger log = Logger.getLogger(AbstractTextFilterOFD.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(AbstractTextFilterOFD.class); // Initialised in subclass in an object initializer protected TextFilter[] filters; diff --git a/dspace-api/src/main/java/org/dspace/sort/SortOption.java b/dspace-api/src/main/java/org/dspace/sort/SortOption.java index 5c1cdfa95d..19634164ce 100644 --- a/dspace-api/src/main/java/org/dspace/sort/SortOption.java +++ b/dspace-api/src/main/java/org/dspace/sort/SortOption.java @@ -15,9 +15,9 @@ import java.util.TreeSet; import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.apache.commons.lang.ArrayUtils; +import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.core.ConfigurationManager; /** @@ -26,7 +26,7 @@ import org.dspace.core.ConfigurationManager; * @author Richard Jones */ public class SortOption { - private static final Logger log = Logger.getLogger(SortOption.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(SortOption.class); public static final String ASCENDING = "ASC"; public static final String DESCENDING = "DESC"; diff --git a/dspace-api/src/main/java/org/dspace/statistics/Dataset.java b/dspace-api/src/main/java/org/dspace/statistics/Dataset.java index 1993dc5847..9204c56a21 100644 --- a/dspace-api/src/main/java/org/dspace/statistics/Dataset.java +++ b/dspace-api/src/main/java/org/dspace/statistics/Dataset.java @@ -18,8 +18,8 @@ import java.util.List; import java.util.Map; import au.com.bytecode.opencsv.CSVWriter; -import org.apache.commons.lang.ArrayUtils; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang3.StringUtils; /** * @author kevinvandevelde at atmire.com @@ -54,8 +54,8 @@ public class Dataset { initRowLabels(rows); } - public Dataset(float[][] matrix) { - this.matrix = (String[][]) ArrayUtils.clone(matrix); + public Dataset(String[][] matrix) { + this.matrix = ArrayUtils.clone(matrix); nbRows = matrix.length; if (0 < matrix.length && 0 < matrix[0].length) { nbCols = matrix[0].length; diff --git a/dspace-api/src/main/java/org/dspace/statistics/SolrLoggerServiceImpl.java b/dspace-api/src/main/java/org/dspace/statistics/SolrLoggerServiceImpl.java index e6c09ea32b..fd26725a71 100644 --- a/dspace-api/src/main/java/org/dspace/statistics/SolrLoggerServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/statistics/SolrLoggerServiceImpl.java @@ -39,9 +39,9 @@ import com.maxmind.geoip2.DatabaseReader; import com.maxmind.geoip2.exception.GeoIp2Exception; import com.maxmind.geoip2.model.CityResponse; import org.apache.commons.io.FileUtils; -import org.apache.commons.lang.ArrayUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.commons.lang.time.DateFormatUtils; +import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; @@ -82,14 +82,13 @@ import org.dspace.core.Constants; import org.dspace.core.Context; import org.dspace.eperson.EPerson; import org.dspace.eperson.Group; +import org.dspace.service.ClientInfoService; import org.dspace.services.ConfigurationService; import org.dspace.statistics.service.SolrLoggerService; import org.dspace.statistics.util.DnsLookup; import org.dspace.statistics.util.LocationUtils; import org.dspace.statistics.util.SpiderDetector; import org.dspace.usage.UsageWorkflowEvent; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; @@ -103,8 +102,9 @@ import org.springframework.beans.factory.annotation.Autowired; * @author mdiggory at atmire.com */ public class SolrLoggerServiceImpl implements SolrLoggerService, InitializingBean { - private static final Logger log - = LoggerFactory.getLogger(SolrLoggerServiceImpl.class); + + private static final org.apache.logging.log4j.Logger log = + org.apache.logging.log4j.LogManager.getLogger(SolrLoggerServiceImpl.class); private static final String MULTIPLE_VALUES_SPLITTER = "|"; protected SolrServer solr; @@ -115,8 +115,6 @@ public class SolrLoggerServiceImpl implements SolrLoggerService, InitializingBea protected DatabaseReader locationService; - protected boolean useProxies; - private static List statisticYearCores = new ArrayList(); private static boolean statisticYearCoresInit = false; @@ -126,6 +124,8 @@ public class SolrLoggerServiceImpl implements SolrLoggerService, InitializingBea protected ContentServiceFactory contentServiceFactory; @Autowired(required = true) private ConfigurationService configurationService; + @Autowired(required = true) + private ClientInfoService clientInfoService; public static enum StatisticsType { VIEW("view"), @@ -151,7 +151,6 @@ public class SolrLoggerServiceImpl implements SolrLoggerService, InitializingBea @Override public void afterPropertiesSet() throws Exception { - log.info("solr-statistics.spidersfile:" + configurationService.getProperty("solr-statistics.spidersfile")); log.info("solr-statistics.server:" + configurationService.getProperty("solr-statistics.server")); log.info("usage-statistics.dbfile:" + configurationService.getProperty("usage-statistics.dbfile")); @@ -192,9 +191,6 @@ public class SolrLoggerServiceImpl implements SolrLoggerService, InitializingBea log.error("The required 'dbfile' configuration is missing in solr-statistics.cfg!"); } locationService = service; - - useProxies = configurationService.getBooleanProperty("useProxies"); - log.info("useProxies=" + useProxies); } @Override @@ -296,26 +292,7 @@ public class SolrLoggerServiceImpl implements SolrLoggerService, InitializingBea // Save our basic info that we already have if (request != null) { - String ip = request.getRemoteAddr(); - - if (isUseProxies() && request.getHeader("X-Forwarded-For") != null) { - /* This header is a comma delimited list */ - for (String xfip : request.getHeader("X-Forwarded-For").split(",")) { - /* proxy itself will sometime populate this header with the same value in - remote address. ordering in spec is vague, we'll just take the last - not equal to the proxy - */ - if (!request.getHeader("X-Forwarded-For").contains(ip)) { - ip = xfip.trim(); - } - } - } - if (!isUseProxies() && request.getHeader("X-Forwarded-For") != null) { - log.warn( - "X-Forwarded-For header detected but useProxies is not enabled. If your dspace is behind a proxy " + - "set it to true"); - } - + String ip = clientInfoService.getClientIp(request); doc1.addField("ip", ip); //Also store the referrer @@ -391,65 +368,48 @@ public class SolrLoggerServiceImpl implements SolrLoggerService, InitializingBea SolrInputDocument doc1 = new SolrInputDocument(); // Save our basic info that we already have - if (!isUseProxies() && xforwardedfor != null) { - log.warn( - "X-Forwarded-For header detected but useProxies is not enabled. If your dspace is behind a proxy set " + - "it to true"); + ip = clientInfoService.getClientIp(ip, xforwardedfor); + doc1.addField("ip", ip); + + try { + String dns = DnsLookup.reverseDns(ip); + doc1.addField("dns", dns.toLowerCase()); + } catch (Exception e) { + log.info("Failed DNS Lookup for IP:" + ip); + log.debug(e.getMessage(), e); } - if (isUseProxies() && xforwardedfor != null) { - /* This header is a comma delimited list */ - for (String xfip : xforwardedfor.split(",")) { - /* proxy itself will sometime populate this header with the same value in - remote address. ordering in spec is vague, we'll just take the last - not equal to the proxy - */ - if (!xforwardedfor.contains(ip)) { - ip = xfip.trim(); - } - } - - doc1.addField("ip", ip); - + if (userAgent != null) { + doc1.addField("userAgent", userAgent); + } + doc1.addField("isBot", isSpiderBot); + // Save the location information if valid, save the event without + // location information if not valid + if (locationService != null) { try { - String dns = DnsLookup.reverseDns(ip); - doc1.addField("dns", dns.toLowerCase()); - } catch (Exception e) { - log.info("Failed DNS Lookup for IP:" + ip); - log.debug(e.getMessage(), e); - } - if (userAgent != null) { - doc1.addField("userAgent", userAgent); - } - doc1.addField("isBot", isSpiderBot); - // Save the location information if valid, save the event without - // location information if not valid - if (locationService != null) { - try { - InetAddress ipAddress = InetAddress.getByName(ip); - CityResponse location = locationService.city(ipAddress); - String countryCode = location.getCountry().getIsoCode(); - double latitude = location.getLocation().getLatitude(); - double longitude = location.getLocation().getLongitude(); - if (!( - "--".equals(countryCode) - && latitude == -180 - && longitude == -180) - ) { - try { - doc1.addField("continent", LocationUtils + InetAddress ipAddress = InetAddress.getByName(ip); + CityResponse location = locationService.city(ipAddress); + String countryCode = location.getCountry().getIsoCode(); + double latitude = location.getLocation().getLatitude(); + double longitude = location.getLocation().getLongitude(); + if (!( + "--".equals(countryCode) + && latitude == -180 + && longitude == -180) + ) { + try { + doc1.addField("continent", LocationUtils .getContinentCode(countryCode)); - } catch (Exception e) { - System.out + } catch (Exception e) { + System.out .println("COUNTRY ERROR: " + countryCode); - } - doc1.addField("countryCode", countryCode); - doc1.addField("city", location.getCity().getName()); - doc1.addField("latitude", latitude); - doc1.addField("longitude", longitude); } - } catch (GeoIp2Exception | IOException e) { - log.error("Unable to get location of request: {}", e.getMessage()); + doc1.addField("countryCode", countryCode); + doc1.addField("city", location.getCity().getName()); + doc1.addField("latitude", latitude); + doc1.addField("longitude", longitude); } + } catch (GeoIp2Exception | IOException e) { + log.error("Unable to get location of request: {}", e.getMessage()); } } @@ -604,7 +564,7 @@ public class SolrLoggerServiceImpl implements SolrLoggerService, InitializingBea @Override public boolean isUseProxies() { - return useProxies; + return clientInfoService.isUseProxiesEnabled(); } @Override diff --git a/dspace-api/src/main/java/org/dspace/statistics/SolrLoggerUsageEventListener.java b/dspace-api/src/main/java/org/dspace/statistics/SolrLoggerUsageEventListener.java index deb0a92d5b..bce0a6f7b1 100644 --- a/dspace-api/src/main/java/org/dspace/statistics/SolrLoggerUsageEventListener.java +++ b/dspace-api/src/main/java/org/dspace/statistics/SolrLoggerUsageEventListener.java @@ -7,7 +7,7 @@ */ package org.dspace.statistics; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.eperson.EPerson; import org.dspace.services.model.Event; import org.dspace.statistics.service.SolrLoggerService; @@ -26,7 +26,7 @@ import org.springframework.util.CollectionUtils; */ public class SolrLoggerUsageEventListener extends AbstractUsageEventListener { - private static Logger log = Logger.getLogger(SolrLoggerUsageEventListener.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(SolrLoggerUsageEventListener.class); protected SolrLoggerService solrLoggerService; diff --git a/dspace-api/src/main/java/org/dspace/statistics/content/StatisticsDataSearches.java b/dspace-api/src/main/java/org/dspace/statistics/content/StatisticsDataSearches.java index a7c20688be..5a3d92e8f9 100644 --- a/dspace-api/src/main/java/org/dspace/statistics/content/StatisticsDataSearches.java +++ b/dspace-api/src/main/java/org/dspace/statistics/content/StatisticsDataSearches.java @@ -14,8 +14,8 @@ import java.text.ParseException; import java.util.ArrayList; import java.util.List; -import org.apache.commons.lang.ArrayUtils; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.util.ClientUtils; import org.dspace.content.DSpaceObject; diff --git a/dspace-api/src/main/java/org/dspace/statistics/content/StatisticsDataVisits.java b/dspace-api/src/main/java/org/dspace/statistics/content/StatisticsDataVisits.java index cdd0cbbb73..25458358c5 100644 --- a/dspace-api/src/main/java/org/dspace/statistics/content/StatisticsDataVisits.java +++ b/dspace-api/src/main/java/org/dspace/statistics/content/StatisticsDataVisits.java @@ -16,7 +16,7 @@ import java.util.List; import java.util.Map; import java.util.UUID; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.util.ClientUtils; import org.dspace.app.util.Util; @@ -353,13 +353,13 @@ public class StatisticsDataVisits extends StatisticsData { /* for (int j = 0; j < topCounts2.length; j++) { ObjectCount count2 = topCounts2[j]; - String query = firsDataset.getFacetField() + ":" + count1.getValue(); + String query = firsDataset.getFacetField() + ":" + count1.getValues(); // Check if we also have a type present (if so this should be put into the query if ("id".equals(firsDataset.getFacetField()) && firsDataset.getQueries().get(0).getDsoType() != -1) query += " AND type:" + firsDataset.getQueries().get(0).getDsoType(); - query += " AND " + secondDataSet.getFacetField() + ":" + count2.getValue(); + query += " AND " + secondDataSet.getFacetField() + ":" + count2.getValues(); // Check if we also have a type present (if so this should be put into the query if ("id".equals(secondDataSet.getFacetField()) && secondDataSet.getQueries().get(0) .getDsoType() != -1) @@ -371,8 +371,8 @@ public class StatisticsDataVisits extends StatisticsData { // No need to add this many times // TODO: dit vervangen door te displayen value if (i == 0) { - dataset.setRowLabel(j, getResultName(count2.getValue(), secondDataSet, context)); - dataset.setRowLabelAttr(j, getAttributes(count2.getValue(), secondDataSet, context)); + dataset.setRowLabel(j, getResultName(count2.getValues(), secondDataSet, context)); + dataset.setRowLabelAttr(j, getAttributes(count2.getValues(), secondDataSet, context)); } diff --git a/dspace-api/src/main/java/org/dspace/statistics/content/StatisticsDataWorkflow.java b/dspace-api/src/main/java/org/dspace/statistics/content/StatisticsDataWorkflow.java index 3d2719faa7..a4d340b1e9 100644 --- a/dspace-api/src/main/java/org/dspace/statistics/content/StatisticsDataWorkflow.java +++ b/dspace-api/src/main/java/org/dspace/statistics/content/StatisticsDataWorkflow.java @@ -17,10 +17,12 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import org.apache.commons.configuration.ConfigurationException; -import org.apache.commons.configuration.PropertiesConfiguration; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.configuration2.PropertiesConfiguration; +import org.apache.commons.configuration2.builder.FileBasedConfigurationBuilder; +import org.apache.commons.configuration2.builder.fluent.Configurations; +import org.apache.commons.configuration2.ex.ConfigurationException; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.common.SolrDocument; @@ -44,7 +46,7 @@ import org.dspace.statistics.content.filter.StatisticsFilter; */ public class StatisticsDataWorkflow extends StatisticsData { - private static final Logger log = Logger.getLogger(StatisticsDataWorkflow.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(StatisticsDataWorkflow.class); /** * Current DSpaceObject for which to generate the statistics. @@ -188,15 +190,16 @@ public class StatisticsDataWorkflow extends StatisticsData { Date oldestDate = (Date) solrDocument.getFieldValue("time"); //Store the date, we only need to retrieve this once ! try { - //Also store it in the solr-statics configuration file, the reason for this being that the sort - // query - //can be very time consuming & we do not want this delay each time we want to see workflow + // Also store it in the solr-statics configuration file, the reason for this being that the sort + // query can be very time consuming & we do not want this delay each time we want to see workflow // statistics String solrConfigDir = configurationService.getProperty("dspace.dir") + File.separator + "config" + File.separator + "modules" + File.separator + "usage-statistics.cfg"; - PropertiesConfiguration config = new PropertiesConfiguration(solrConfigDir); + FileBasedConfigurationBuilder builder = new Configurations() + .propertiesBuilder(solrConfigDir); + PropertiesConfiguration config = builder.getConfiguration(); config.setProperty("workflow-start-date", new DCDate(oldestDate)); - config.save(); + builder.save(); } catch (ConfigurationException e) { log.error("Error while storing workflow start date", e); } diff --git a/dspace-api/src/main/java/org/dspace/statistics/util/ClassicDSpaceLogConverter.java b/dspace-api/src/main/java/org/dspace/statistics/util/ClassicDSpaceLogConverter.java index b26f747aca..3987f5df53 100644 --- a/dspace-api/src/main/java/org/dspace/statistics/util/ClassicDSpaceLogConverter.java +++ b/dspace-api/src/main/java/org/dspace/statistics/util/ClassicDSpaceLogConverter.java @@ -28,7 +28,7 @@ import org.apache.commons.cli.HelpFormatter; import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; import org.apache.commons.cli.PosixParser; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.app.statistics.LogAnalyser; import org.dspace.app.statistics.LogLine; import org.dspace.content.DSpaceObject; @@ -44,7 +44,7 @@ import org.dspace.handle.factory.HandleServiceFactory; * @see StatisticsImporter */ public class ClassicDSpaceLogConverter { - private final Logger log = Logger.getLogger(ClassicDSpaceLogConverter.class); + private final Logger log = org.apache.logging.log4j.LogManager.getLogger(ClassicDSpaceLogConverter.class); /** * A DSpace context diff --git a/dspace-api/src/main/java/org/dspace/statistics/util/LocationUtils.java b/dspace-api/src/main/java/org/dspace/statistics/util/LocationUtils.java index 693454a2cb..0b08085f52 100644 --- a/dspace-api/src/main/java/org/dspace/statistics/util/LocationUtils.java +++ b/dspace-api/src/main/java/org/dspace/statistics/util/LocationUtils.java @@ -13,7 +13,7 @@ import java.util.MissingResourceException; import java.util.Properties; import java.util.ResourceBundle; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.core.I18nUtil; /** @@ -24,7 +24,7 @@ import org.dspace.core.I18nUtil; * @author ben at atmire.com */ public class LocationUtils { - private static final Logger logger = Logger.getLogger(LocationUtils.class); + private static final Logger logger = org.apache.logging.log4j.LogManager.getLogger(LocationUtils.class); private static final Properties countryToContinent = new Properties(); diff --git a/dspace-api/src/main/java/org/dspace/statistics/util/SpiderDetectorServiceImpl.java b/dspace-api/src/main/java/org/dspace/statistics/util/SpiderDetectorServiceImpl.java index 7939db3a12..0b5149df74 100644 --- a/dspace-api/src/main/java/org/dspace/statistics/util/SpiderDetectorServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/statistics/util/SpiderDetectorServiceImpl.java @@ -19,8 +19,9 @@ import java.util.Set; import java.util.regex.Pattern; import javax.servlet.http.HttpServletRequest; -import org.apache.commons.configuration.ConversionException; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.configuration2.ex.ConversionException; +import org.apache.commons.lang3.StringUtils; +import org.dspace.service.ClientInfoService; import org.dspace.services.ConfigurationService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -40,8 +41,6 @@ public class SpiderDetectorServiceImpl implements SpiderDetectorService { private static final Logger log = LoggerFactory.getLogger(SpiderDetectorServiceImpl.class); - private Boolean useProxies; - private Boolean useCaseInsensitiveMatching; private final List agents @@ -51,6 +50,7 @@ public class SpiderDetectorServiceImpl implements SpiderDetectorService { = Collections.synchronizedList(new ArrayList()); private ConfigurationService configurationService; + private ClientInfoService clientInfoService; /** * Sparse HashTable structure to hold IP address ranges. @@ -58,8 +58,9 @@ public class SpiderDetectorServiceImpl implements SpiderDetectorService { private IPTable table = null; @Autowired(required = true) - public SpiderDetectorServiceImpl(ConfigurationService configurationService) { + public SpiderDetectorServiceImpl(ConfigurationService configurationService, ClientInfoService clientInfoService) { this.configurationService = configurationService; + this.clientInfoService = clientInfoService; } public IPTable getTable() { @@ -104,7 +105,7 @@ public class SpiderDetectorServiceImpl implements SpiderDetectorService { } // No. See if any IP addresses match - if (isUseProxies() && proxyIPs != null) { + if (clientInfoService.isUseProxiesEnabled() && proxyIPs != null) { /* This header is a comma delimited list */ for (String xfip : proxyIPs.split(",")) { if (isSpider(xfip)) { @@ -306,12 +307,4 @@ public class SpiderDetectorServiceImpl implements SpiderDetectorService { return useCaseInsensitiveMatching; } - private boolean isUseProxies() { - if (useProxies == null) { - useProxies = configurationService.getBooleanProperty("useProxies"); - } - - return useProxies; - } - } diff --git a/dspace-api/src/main/java/org/dspace/statistics/util/StatisticsClient.java b/dspace-api/src/main/java/org/dspace/statistics/util/StatisticsClient.java index 9662a3f7d9..61fd2619c2 100644 --- a/dspace-api/src/main/java/org/dspace/statistics/util/StatisticsClient.java +++ b/dspace-api/src/main/java/org/dspace/statistics/util/StatisticsClient.java @@ -15,7 +15,7 @@ import org.apache.commons.cli.CommandLineParser; import org.apache.commons.cli.HelpFormatter; import org.apache.commons.cli.Options; import org.apache.commons.cli.PosixParser; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.apache.tools.ant.taskdefs.Get; import org.dspace.services.factory.DSpaceServicesFactory; import org.dspace.statistics.factory.StatisticsServiceFactory; @@ -27,7 +27,7 @@ import org.dspace.statistics.service.SolrLoggerService; * @author Stuart Lewis */ public class StatisticsClient { - private static final Logger log = Logger.getLogger(StatisticsClient.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(StatisticsClient.class); /** * Default constructor diff --git a/dspace-api/src/main/java/org/dspace/statistics/util/StatisticsImporter.java b/dspace-api/src/main/java/org/dspace/statistics/util/StatisticsImporter.java index 8588b381ce..f236e1bc72 100644 --- a/dspace-api/src/main/java/org/dspace/statistics/util/StatisticsImporter.java +++ b/dspace-api/src/main/java/org/dspace/statistics/util/StatisticsImporter.java @@ -33,8 +33,8 @@ import org.apache.commons.cli.CommandLineParser; import org.apache.commons.cli.HelpFormatter; import org.apache.commons.cli.Options; import org.apache.commons.cli.PosixParser; -import org.apache.commons.lang.time.DateFormatUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.time.DateFormatUtils; +import org.apache.logging.log4j.Logger; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.impl.HttpSolrServer; import org.apache.solr.common.SolrInputDocument; @@ -64,7 +64,7 @@ import org.dspace.statistics.service.SolrLoggerService; * @see ClassicDSpaceLogConverter */ public class StatisticsImporter { - private static final Logger log = Logger.getLogger(StatisticsImporter.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(StatisticsImporter.class); /** * Date format (for solr) diff --git a/dspace-api/src/main/java/org/dspace/storage/bitstore/BitStoreMigrate.java b/dspace-api/src/main/java/org/dspace/storage/bitstore/BitStoreMigrate.java index 9aab7c4346..1c5ed69757 100644 --- a/dspace-api/src/main/java/org/dspace/storage/bitstore/BitStoreMigrate.java +++ b/dspace-api/src/main/java/org/dspace/storage/bitstore/BitStoreMigrate.java @@ -13,7 +13,7 @@ import org.apache.commons.cli.HelpFormatter; import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; import org.apache.commons.cli.PosixParser; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.BitstreamService; import org.dspace.core.Context; @@ -28,7 +28,7 @@ public class BitStoreMigrate { /** * log4j log */ - private static Logger log = Logger.getLogger(BitStoreMigrate.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(BitStoreMigrate.class); private static final BitstreamService bitstreamService = ContentServiceFactory.getInstance().getBitstreamService(); private static final BitstreamStorageService bitstreamStorageService = diff --git a/dspace-api/src/main/java/org/dspace/storage/bitstore/BitstreamStorageServiceImpl.java b/dspace-api/src/main/java/org/dspace/storage/bitstore/BitstreamStorageServiceImpl.java index 18e1f33388..c63b4ebe7e 100644 --- a/dspace-api/src/main/java/org/dspace/storage/bitstore/BitstreamStorageServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/storage/bitstore/BitstreamStorageServiceImpl.java @@ -17,7 +17,7 @@ import java.util.Map; import java.util.UUID; import org.apache.commons.collections4.MapUtils; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.checker.service.ChecksumHistoryService; import org.dspace.content.Bitstream; @@ -62,7 +62,7 @@ public class BitstreamStorageServiceImpl implements BitstreamStorageService, Ini /** * log4j log */ - private static Logger log = Logger.getLogger(BitstreamStorageServiceImpl.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(BitstreamStorageServiceImpl.class); @Autowired(required = true) protected BitstreamService bitstreamService; diff --git a/dspace-api/src/main/java/org/dspace/storage/bitstore/Cleanup.java b/dspace-api/src/main/java/org/dspace/storage/bitstore/Cleanup.java index 97c2a512b7..5b8ff11c88 100644 --- a/dspace-api/src/main/java/org/dspace/storage/bitstore/Cleanup.java +++ b/dspace-api/src/main/java/org/dspace/storage/bitstore/Cleanup.java @@ -13,7 +13,7 @@ import org.apache.commons.cli.HelpFormatter; import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; import org.apache.commons.cli.PosixParser; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.storage.bitstore.factory.StorageServiceFactory; /** @@ -26,7 +26,7 @@ public class Cleanup { /** * log4j log */ - private static Logger log = Logger.getLogger(Cleanup.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(Cleanup.class); /** * Default constructor diff --git a/dspace-api/src/main/java/org/dspace/storage/bitstore/DSBitStoreService.java b/dspace-api/src/main/java/org/dspace/storage/bitstore/DSBitStoreService.java index 31901c7f34..36f75c67f9 100644 --- a/dspace-api/src/main/java/org/dspace/storage/bitstore/DSBitStoreService.java +++ b/dspace-api/src/main/java/org/dspace/storage/bitstore/DSBitStoreService.java @@ -17,7 +17,7 @@ import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Map; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.Bitstream; import org.dspace.core.Utils; @@ -33,7 +33,7 @@ public class DSBitStoreService implements BitStoreService { /** * log4j log */ - private static Logger log = Logger.getLogger(DSBitStoreService.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(DSBitStoreService.class); // These settings control the way an identifier is hashed into // directory and file names diff --git a/dspace-api/src/main/java/org/dspace/storage/bitstore/S3BitStoreService.java b/dspace-api/src/main/java/org/dspace/storage/bitstore/S3BitStoreService.java index 51072d2259..9d7ec14143 100644 --- a/dspace-api/src/main/java/org/dspace/storage/bitstore/S3BitStoreService.java +++ b/dspace-api/src/main/java/org/dspace/storage/bitstore/S3BitStoreService.java @@ -27,7 +27,7 @@ import com.amazonaws.services.s3.model.S3Object; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; import org.apache.http.HttpStatus; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.Bitstream; import org.dspace.core.ConfigurationManager; import org.dspace.core.Utils; @@ -45,7 +45,7 @@ public class S3BitStoreService implements BitStoreService { /** * log4j log */ - private static Logger log = Logger.getLogger(S3BitStoreService.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(S3BitStoreService.class); /** * Checksum algorithm 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 13944f8de7..a8ca129e85 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 @@ -23,8 +23,8 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.sql.DataSource; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.core.Context; import org.dspace.discovery.IndexingService; import org.dspace.discovery.SearchServiceException; @@ -54,7 +54,7 @@ public class DatabaseUtils { /** * log4j category */ - private static final Logger log = Logger.getLogger(DatabaseUtils.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(DatabaseUtils.class); // Our Flyway DB object (initialized by setupFlyway()) private static Flyway flywaydb; diff --git a/dspace-api/src/main/java/org/dspace/storage/rdbms/GroupServiceInitializer.java b/dspace-api/src/main/java/org/dspace/storage/rdbms/GroupServiceInitializer.java index 1517b29a31..11018d37e0 100644 --- a/dspace-api/src/main/java/org/dspace/storage/rdbms/GroupServiceInitializer.java +++ b/dspace-api/src/main/java/org/dspace/storage/rdbms/GroupServiceInitializer.java @@ -9,7 +9,7 @@ package org.dspace.storage.rdbms; import java.sql.Connection; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.core.Context; import org.dspace.eperson.service.GroupService; import org.flywaydb.core.api.MigrationInfo; @@ -24,7 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired; */ public class GroupServiceInitializer implements FlywayCallback { - private final Logger log = Logger.getLogger(GroupServiceInitializer.class); + private final Logger log = org.apache.logging.log4j.LogManager.getLogger(GroupServiceInitializer.class); @Autowired(required = true) protected GroupService groupService; diff --git a/dspace-api/src/main/java/org/dspace/storage/rdbms/PostgreSQLCryptoChecker.java b/dspace-api/src/main/java/org/dspace/storage/rdbms/PostgreSQLCryptoChecker.java index 410e922e0c..48f2e4e6f0 100644 --- a/dspace-api/src/main/java/org/dspace/storage/rdbms/PostgreSQLCryptoChecker.java +++ b/dspace-api/src/main/java/org/dspace/storage/rdbms/PostgreSQLCryptoChecker.java @@ -11,7 +11,7 @@ import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.flywaydb.core.api.FlywayException; import org.flywaydb.core.api.MigrationInfo; import org.flywaydb.core.api.callback.FlywayCallback; @@ -29,7 +29,7 @@ import org.flywaydb.core.api.callback.FlywayCallback; * @author Tim Donohue */ public class PostgreSQLCryptoChecker implements FlywayCallback { - private Logger log = Logger.getLogger(PostgreSQLCryptoChecker.class); + private Logger log = org.apache.logging.log4j.LogManager.getLogger(PostgreSQLCryptoChecker.class); /** * Check for pgcrypto (if needed). Throws an exception if pgcrypto is diff --git a/dspace-api/src/main/java/org/dspace/storage/rdbms/SiteServiceInitializer.java b/dspace-api/src/main/java/org/dspace/storage/rdbms/SiteServiceInitializer.java index 68f671c951..a4b7129546 100644 --- a/dspace-api/src/main/java/org/dspace/storage/rdbms/SiteServiceInitializer.java +++ b/dspace-api/src/main/java/org/dspace/storage/rdbms/SiteServiceInitializer.java @@ -9,7 +9,7 @@ package org.dspace.storage.rdbms; import java.sql.Connection; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.service.SiteService; import org.dspace.core.Context; import org.flywaydb.core.api.MigrationInfo; @@ -24,7 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired; */ public class SiteServiceInitializer implements FlywayCallback { - private Logger log = Logger.getLogger(SiteServiceInitializer.class); + private Logger log = org.apache.logging.log4j.LogManager.getLogger(SiteServiceInitializer.class); @Autowired(required = true) protected SiteService siteService; diff --git a/dspace-api/src/main/java/org/dspace/storage/rdbms/migration/MigrationUtils.java b/dspace-api/src/main/java/org/dspace/storage/rdbms/migration/MigrationUtils.java index 4c4dcb2896..ce481d0caf 100644 --- a/dspace-api/src/main/java/org/dspace/storage/rdbms/migration/MigrationUtils.java +++ b/dspace-api/src/main/java/org/dspace/storage/rdbms/migration/MigrationUtils.java @@ -12,7 +12,7 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; /** * This Utility class offers utility methods which may be of use to perform diff --git a/dspace-api/src/main/java/org/dspace/storage/rdbms/migration/V6_0_2016_01_26__DS_2188_Remove_DBMS_Browse_Tables.java b/dspace-api/src/main/java/org/dspace/storage/rdbms/migration/V6_0_2016_01_26__DS_2188_Remove_DBMS_Browse_Tables.java index 366fc76b89..2b614b5356 100644 --- a/dspace-api/src/main/java/org/dspace/storage/rdbms/migration/V6_0_2016_01_26__DS_2188_Remove_DBMS_Browse_Tables.java +++ b/dspace-api/src/main/java/org/dspace/storage/rdbms/migration/V6_0_2016_01_26__DS_2188_Remove_DBMS_Browse_Tables.java @@ -10,7 +10,7 @@ package org.dspace.storage.rdbms.migration; import java.sql.Connection; import java.sql.SQLException; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.browse.BrowseException; import org.dspace.browse.BrowseIndex; import org.dspace.storage.rdbms.DatabaseUtils; @@ -27,7 +27,8 @@ public class V6_0_2016_01_26__DS_2188_Remove_DBMS_Browse_Tables implements JdbcM /** * log4j category */ - private static final Logger log = Logger.getLogger(V6_0_2016_01_26__DS_2188_Remove_DBMS_Browse_Tables.class); + private static final Logger log = + org.apache.logging.log4j.LogManager.getLogger(V6_0_2016_01_26__DS_2188_Remove_DBMS_Browse_Tables.class); /* The checksum to report for this migration (when successful) */ private int checksum = -1; diff --git a/dspace-api/src/main/java/org/dspace/submit/lookup/ArXivFileDataLoader.java b/dspace-api/src/main/java/org/dspace/submit/lookup/ArXivFileDataLoader.java index 3711842fde..ebc898e4cf 100644 --- a/dspace-api/src/main/java/org/dspace/submit/lookup/ArXivFileDataLoader.java +++ b/dspace-api/src/main/java/org/dspace/submit/lookup/ArXivFileDataLoader.java @@ -25,8 +25,8 @@ import gr.ekt.bte.core.RecordSet; import gr.ekt.bte.core.Value; import gr.ekt.bte.dataloader.FileDataLoader; import gr.ekt.bte.exceptions.MalformedSourceException; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.app.util.XMLUtils; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -40,7 +40,7 @@ import org.xml.sax.SAXException; */ public class ArXivFileDataLoader extends FileDataLoader { - private static Logger log = Logger.getLogger(ArXivFileDataLoader.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(ArXivFileDataLoader.class); Map fieldMap; // mapping between service fields and local // intermediate fields diff --git a/dspace-api/src/main/java/org/dspace/submit/lookup/ArXivService.java b/dspace-api/src/main/java/org/dspace/submit/lookup/ArXivService.java index 44cd7ca541..0a32871758 100644 --- a/dspace-api/src/main/java/org/dspace/submit/lookup/ArXivService.java +++ b/dspace-api/src/main/java/org/dspace/submit/lookup/ArXivService.java @@ -16,7 +16,7 @@ import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import gr.ekt.bte.core.Record; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.http.HttpException; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; diff --git a/dspace-api/src/main/java/org/dspace/submit/lookup/CiNiiFileDataLoader.java b/dspace-api/src/main/java/org/dspace/submit/lookup/CiNiiFileDataLoader.java index 1ddc866568..410c30ca58 100644 --- a/dspace-api/src/main/java/org/dspace/submit/lookup/CiNiiFileDataLoader.java +++ b/dspace-api/src/main/java/org/dspace/submit/lookup/CiNiiFileDataLoader.java @@ -25,8 +25,8 @@ import gr.ekt.bte.core.RecordSet; import gr.ekt.bte.core.Value; import gr.ekt.bte.dataloader.FileDataLoader; import gr.ekt.bte.exceptions.MalformedSourceException; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.xml.sax.SAXException; @@ -38,7 +38,7 @@ import org.xml.sax.SAXException; */ public class CiNiiFileDataLoader extends FileDataLoader { - private static Logger log = Logger.getLogger(CiNiiFileDataLoader.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(CiNiiFileDataLoader.class); Map fieldMap; // mapping between service fields and local // intermediate fields diff --git a/dspace-api/src/main/java/org/dspace/submit/lookup/CiNiiService.java b/dspace-api/src/main/java/org/dspace/submit/lookup/CiNiiService.java index db495906da..23026353fd 100644 --- a/dspace-api/src/main/java/org/dspace/submit/lookup/CiNiiService.java +++ b/dspace-api/src/main/java/org/dspace/submit/lookup/CiNiiService.java @@ -23,7 +23,7 @@ import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.params.CoreConnectionPNames; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.app.util.XMLUtils; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -35,7 +35,7 @@ public class CiNiiService { /** * log4j category */ - private static final Logger log = Logger.getLogger(CiNiiService.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(CiNiiService.class); protected int timeout = 1000; diff --git a/dspace-api/src/main/java/org/dspace/submit/lookup/CiNiiUtils.java b/dspace-api/src/main/java/org/dspace/submit/lookup/CiNiiUtils.java index 65cf2bf609..929705371a 100644 --- a/dspace-api/src/main/java/org/dspace/submit/lookup/CiNiiUtils.java +++ b/dspace-api/src/main/java/org/dspace/submit/lookup/CiNiiUtils.java @@ -17,7 +17,7 @@ import gr.ekt.bte.core.MutableRecord; import gr.ekt.bte.core.Record; import gr.ekt.bte.core.StringValue; import gr.ekt.bte.core.Value; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.dspace.app.util.XMLUtils; import org.dspace.submit.util.SubmissionLookupPublication; import org.w3c.dom.Element; diff --git a/dspace-api/src/main/java/org/dspace/submit/lookup/CrossRefFileDataLoader.java b/dspace-api/src/main/java/org/dspace/submit/lookup/CrossRefFileDataLoader.java index 71b50e06dc..dcda4fdba5 100644 --- a/dspace-api/src/main/java/org/dspace/submit/lookup/CrossRefFileDataLoader.java +++ b/dspace-api/src/main/java/org/dspace/submit/lookup/CrossRefFileDataLoader.java @@ -25,7 +25,7 @@ import gr.ekt.bte.core.RecordSet; import gr.ekt.bte.core.Value; import gr.ekt.bte.dataloader.FileDataLoader; import gr.ekt.bte.exceptions.MalformedSourceException; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.dspace.app.util.XMLUtils; import org.w3c.dom.Document; import org.w3c.dom.Element; diff --git a/dspace-api/src/main/java/org/dspace/submit/lookup/CrossRefService.java b/dspace-api/src/main/java/org/dspace/submit/lookup/CrossRefService.java index d1c0fa2654..f73e9c0352 100644 --- a/dspace-api/src/main/java/org/dspace/submit/lookup/CrossRefService.java +++ b/dspace-api/src/main/java/org/dspace/submit/lookup/CrossRefService.java @@ -24,7 +24,7 @@ import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import gr.ekt.bte.core.Record; import org.apache.commons.io.IOUtils; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.http.HttpException; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; @@ -34,7 +34,7 @@ import org.apache.http.client.methods.HttpGet; import org.apache.http.client.utils.URIBuilder; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.params.CoreConnectionPNames; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.app.util.XMLUtils; import org.dspace.core.Context; import org.dspace.core.LogManager; @@ -51,7 +51,7 @@ import org.xml.sax.SAXException; */ public class CrossRefService { - private static final Logger log = Logger.getLogger(CrossRefService.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(CrossRefService.class); protected int timeout = 1000; diff --git a/dspace-api/src/main/java/org/dspace/submit/lookup/CrossRefUtils.java b/dspace-api/src/main/java/org/dspace/submit/lookup/CrossRefUtils.java index c80af2b0a7..f9b64092af 100644 --- a/dspace-api/src/main/java/org/dspace/submit/lookup/CrossRefUtils.java +++ b/dspace-api/src/main/java/org/dspace/submit/lookup/CrossRefUtils.java @@ -17,7 +17,7 @@ import gr.ekt.bte.core.MutableRecord; import gr.ekt.bte.core.Record; import gr.ekt.bte.core.StringValue; import gr.ekt.bte.core.Value; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.dspace.app.util.XMLUtils; import org.dspace.submit.util.SubmissionLookupPublication; import org.w3c.dom.Element; diff --git a/dspace-api/src/main/java/org/dspace/submit/lookup/DSpaceWorkspaceItemOutputGenerator.java b/dspace-api/src/main/java/org/dspace/submit/lookup/DSpaceWorkspaceItemOutputGenerator.java index 13d57a303d..f93eb29bbc 100644 --- a/dspace-api/src/main/java/org/dspace/submit/lookup/DSpaceWorkspaceItemOutputGenerator.java +++ b/dspace-api/src/main/java/org/dspace/submit/lookup/DSpaceWorkspaceItemOutputGenerator.java @@ -21,8 +21,9 @@ import gr.ekt.bte.core.OutputGenerator; import gr.ekt.bte.core.Record; import gr.ekt.bte.core.RecordSet; import gr.ekt.bte.core.Value; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.dspace.app.util.DCInput; import org.dspace.app.util.DCInputSet; import org.dspace.app.util.DCInputsReader; @@ -49,8 +50,7 @@ import org.springframework.beans.factory.annotation.Autowired; */ public class DSpaceWorkspaceItemOutputGenerator implements OutputGenerator { - private static Logger log = Logger - .getLogger(DSpaceWorkspaceItemOutputGenerator.class); + private static Logger log = LogManager.getLogger(DSpaceWorkspaceItemOutputGenerator.class); protected Context context; diff --git a/dspace-api/src/main/java/org/dspace/submit/lookup/MapConverterModifier.java b/dspace-api/src/main/java/org/dspace/submit/lookup/MapConverterModifier.java index b4885e9271..8698363924 100644 --- a/dspace-api/src/main/java/org/dspace/submit/lookup/MapConverterModifier.java +++ b/dspace-api/src/main/java/org/dspace/submit/lookup/MapConverterModifier.java @@ -21,7 +21,7 @@ import gr.ekt.bte.core.MutableRecord; import gr.ekt.bte.core.Record; import gr.ekt.bte.core.StringValue; import gr.ekt.bte.core.Value; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.dspace.services.ConfigurationService; /** diff --git a/dspace-api/src/main/java/org/dspace/submit/lookup/MultipleSubmissionLookupDataLoader.java b/dspace-api/src/main/java/org/dspace/submit/lookup/MultipleSubmissionLookupDataLoader.java index 3ef5f65f80..712bfbc3a4 100644 --- a/dspace-api/src/main/java/org/dspace/submit/lookup/MultipleSubmissionLookupDataLoader.java +++ b/dspace-api/src/main/java/org/dspace/submit/lookup/MultipleSubmissionLookupDataLoader.java @@ -21,7 +21,8 @@ import gr.ekt.bte.core.RecordSet; import gr.ekt.bte.core.StringValue; import gr.ekt.bte.dataloader.FileDataLoader; import gr.ekt.bte.exceptions.MalformedSourceException; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.dspace.core.Context; /** @@ -32,8 +33,7 @@ import org.dspace.core.Context; */ public class MultipleSubmissionLookupDataLoader implements DataLoader { - private static Logger log = Logger - .getLogger(MultipleSubmissionLookupDataLoader.class); + private static Logger log = LogManager.getLogger(MultipleSubmissionLookupDataLoader.class); protected final String NOT_FOUND_DOI = "NOT-FOUND-DOI"; diff --git a/dspace-api/src/main/java/org/dspace/submit/lookup/NetworkSubmissionLookupDataLoader.java b/dspace-api/src/main/java/org/dspace/submit/lookup/NetworkSubmissionLookupDataLoader.java index 43e632e59f..c62afa6c35 100644 --- a/dspace-api/src/main/java/org/dspace/submit/lookup/NetworkSubmissionLookupDataLoader.java +++ b/dspace-api/src/main/java/org/dspace/submit/lookup/NetworkSubmissionLookupDataLoader.java @@ -19,7 +19,7 @@ import gr.ekt.bte.core.Record; import gr.ekt.bte.core.RecordSet; import gr.ekt.bte.core.Value; import gr.ekt.bte.exceptions.MalformedSourceException; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.http.HttpException; import org.dspace.core.Context; diff --git a/dspace-api/src/main/java/org/dspace/submit/lookup/PubmedFileDataLoader.java b/dspace-api/src/main/java/org/dspace/submit/lookup/PubmedFileDataLoader.java index e8213820b6..05a37e64d6 100644 --- a/dspace-api/src/main/java/org/dspace/submit/lookup/PubmedFileDataLoader.java +++ b/dspace-api/src/main/java/org/dspace/submit/lookup/PubmedFileDataLoader.java @@ -25,7 +25,7 @@ import gr.ekt.bte.core.RecordSet; import gr.ekt.bte.core.Value; import gr.ekt.bte.dataloader.FileDataLoader; import gr.ekt.bte.exceptions.MalformedSourceException; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.dspace.app.util.XMLUtils; import org.w3c.dom.Document; import org.w3c.dom.Element; diff --git a/dspace-api/src/main/java/org/dspace/submit/lookup/PubmedOnlineDataLoader.java b/dspace-api/src/main/java/org/dspace/submit/lookup/PubmedOnlineDataLoader.java index e78fd67405..094ce4e21d 100644 --- a/dspace-api/src/main/java/org/dspace/submit/lookup/PubmedOnlineDataLoader.java +++ b/dspace-api/src/main/java/org/dspace/submit/lookup/PubmedOnlineDataLoader.java @@ -16,7 +16,7 @@ import java.util.Set; import gr.ekt.bte.core.Record; import org.apache.http.HttpException; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.core.Context; import org.dspace.core.LogManager; @@ -29,7 +29,7 @@ import org.dspace.core.LogManager; public class PubmedOnlineDataLoader extends NetworkSubmissionLookupDataLoader { protected boolean searchProvider = true; - private static final Logger log = Logger.getLogger(PubmedOnlineDataLoader.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(PubmedOnlineDataLoader.class); protected PubmedService pubmedService = new PubmedService(); diff --git a/dspace-api/src/main/java/org/dspace/submit/lookup/PubmedService.java b/dspace-api/src/main/java/org/dspace/submit/lookup/PubmedService.java index 2bbb2af8bf..fa30ee8ea5 100644 --- a/dspace-api/src/main/java/org/dspace/submit/lookup/PubmedService.java +++ b/dspace-api/src/main/java/org/dspace/submit/lookup/PubmedService.java @@ -19,7 +19,7 @@ import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import gr.ekt.bte.core.Record; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.http.HttpException; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; @@ -29,7 +29,7 @@ import org.apache.http.client.methods.HttpGet; import org.apache.http.client.utils.URIBuilder; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.params.CoreConnectionPNames; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.app.util.XMLUtils; import org.dspace.core.ConfigurationManager; import org.w3c.dom.Document; @@ -44,7 +44,7 @@ import org.xml.sax.SAXException; */ public class PubmedService { - private static final Logger log = Logger.getLogger(PubmedService.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(PubmedService.class); protected int timeout = 1000; diff --git a/dspace-api/src/main/java/org/dspace/submit/lookup/PubmedUtils.java b/dspace-api/src/main/java/org/dspace/submit/lookup/PubmedUtils.java index 03f3e3ab03..bca34de295 100644 --- a/dspace-api/src/main/java/org/dspace/submit/lookup/PubmedUtils.java +++ b/dspace-api/src/main/java/org/dspace/submit/lookup/PubmedUtils.java @@ -19,7 +19,7 @@ import gr.ekt.bte.core.MutableRecord; import gr.ekt.bte.core.Record; import gr.ekt.bte.core.StringValue; import gr.ekt.bte.core.Value; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.dspace.app.util.XMLUtils; import org.dspace.submit.util.SubmissionLookupPublication; import org.w3c.dom.Element; diff --git a/dspace-api/src/main/java/org/dspace/submit/lookup/RemoveLastDotModifier.java b/dspace-api/src/main/java/org/dspace/submit/lookup/RemoveLastDotModifier.java index ed83d24aeb..24a7601b53 100644 --- a/dspace-api/src/main/java/org/dspace/submit/lookup/RemoveLastDotModifier.java +++ b/dspace-api/src/main/java/org/dspace/submit/lookup/RemoveLastDotModifier.java @@ -16,7 +16,7 @@ import gr.ekt.bte.core.MutableRecord; import gr.ekt.bte.core.Record; import gr.ekt.bte.core.StringValue; import gr.ekt.bte.core.Value; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; /** * @author Andrea Bollini diff --git a/dspace-api/src/main/java/org/dspace/submit/lookup/SubmissionItemDataLoader.java b/dspace-api/src/main/java/org/dspace/submit/lookup/SubmissionItemDataLoader.java index a032331efc..286c6ba23b 100644 --- a/dspace-api/src/main/java/org/dspace/submit/lookup/SubmissionItemDataLoader.java +++ b/dspace-api/src/main/java/org/dspace/submit/lookup/SubmissionItemDataLoader.java @@ -15,7 +15,8 @@ import gr.ekt.bte.core.DataLoadingSpec; import gr.ekt.bte.core.Record; import gr.ekt.bte.core.RecordSet; import gr.ekt.bte.exceptions.MalformedSourceException; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.dspace.submit.util.ItemSubmissionLookupDTO; /** @@ -29,8 +30,7 @@ public class SubmissionItemDataLoader implements DataLoader { List providers; - private static Logger log = Logger - .getLogger(SubmissionItemDataLoader.class); + private static Logger log = LogManager.getLogger(SubmissionItemDataLoader.class); public SubmissionItemDataLoader() { dtoList = null; diff --git a/dspace-api/src/main/java/org/dspace/submit/lookup/SubmissionLookupService.java b/dspace-api/src/main/java/org/dspace/submit/lookup/SubmissionLookupService.java index b98581b807..7712b64041 100644 --- a/dspace-api/src/main/java/org/dspace/submit/lookup/SubmissionLookupService.java +++ b/dspace-api/src/main/java/org/dspace/submit/lookup/SubmissionLookupService.java @@ -17,7 +17,7 @@ import gr.ekt.bte.core.DataLoader; import gr.ekt.bte.core.Record; import gr.ekt.bte.core.TransformationEngine; import gr.ekt.bte.dataloader.FileDataLoader; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.submit.util.SubmissionLookupDTO; /** @@ -35,7 +35,7 @@ public class SubmissionLookupService { public static final String PROVIDER_NAME_FIELD = "provider_name_field"; - private static Logger log = Logger.getLogger(SubmissionLookupService.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(SubmissionLookupService.class); public static final String SEPARATOR_VALUE = "#######"; diff --git a/dspace-api/src/main/java/org/dspace/submit/lookup/SubmissionLookupUtils.java b/dspace-api/src/main/java/org/dspace/submit/lookup/SubmissionLookupUtils.java index 995fb6798f..d537b0a5aa 100644 --- a/dspace-api/src/main/java/org/dspace/submit/lookup/SubmissionLookupUtils.java +++ b/dspace-api/src/main/java/org/dspace/submit/lookup/SubmissionLookupUtils.java @@ -14,7 +14,7 @@ import java.util.regex.Pattern; import gr.ekt.bte.core.Record; import gr.ekt.bte.core.Value; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.Item; import org.dspace.content.MetadataSchema; import org.dspace.content.MetadataValue; @@ -31,7 +31,7 @@ import org.dspace.core.Context; * @author Panagiotis Koutsourakis */ public class SubmissionLookupUtils { - private static Logger log = Logger.getLogger(SubmissionLookupUtils.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(SubmissionLookupUtils.class); /** * Default constructor diff --git a/dspace-api/src/main/java/org/dspace/submit/lookup/ValueConcatenationModifier.java b/dspace-api/src/main/java/org/dspace/submit/lookup/ValueConcatenationModifier.java index cdc9aa87db..8d52f1ba73 100644 --- a/dspace-api/src/main/java/org/dspace/submit/lookup/ValueConcatenationModifier.java +++ b/dspace-api/src/main/java/org/dspace/submit/lookup/ValueConcatenationModifier.java @@ -16,7 +16,7 @@ import gr.ekt.bte.core.MutableRecord; import gr.ekt.bte.core.Record; import gr.ekt.bte.core.StringValue; import gr.ekt.bte.core.Value; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; /** * @author Andrea Bollini diff --git a/dspace-api/src/main/java/org/dspace/submit/step/AccessStep.java b/dspace-api/src/main/java/org/dspace/submit/step/AccessStep.java index 3cb16908f3..72273b8037 100644 --- a/dspace-api/src/main/java/org/dspace/submit/step/AccessStep.java +++ b/dspace-api/src/main/java/org/dspace/submit/step/AccessStep.java @@ -7,7 +7,7 @@ */ package org.dspace.submit.step; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.InProgressSubmission; import org.dspace.core.Context; import org.dspace.submit.AbstractProcessingStep; @@ -17,7 +17,7 @@ public class AccessStep extends AbstractProcessingStep { /** * log4j logger */ - private static Logger log = Logger.getLogger(AccessStep.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(AccessStep.class); @Override public void doPreProcessing(Context context, InProgressSubmission wsi) { diff --git a/dspace-api/src/main/java/org/dspace/submit/step/CCLicenseStep.java b/dspace-api/src/main/java/org/dspace/submit/step/CCLicenseStep.java index 1c22849c3d..88606e51ed 100644 --- a/dspace-api/src/main/java/org/dspace/submit/step/CCLicenseStep.java +++ b/dspace-api/src/main/java/org/dspace/submit/step/CCLicenseStep.java @@ -7,7 +7,7 @@ */ package org.dspace.submit.step; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.InProgressSubmission; import org.dspace.core.Context; import org.dspace.license.factory.LicenseServiceFactory; @@ -18,7 +18,7 @@ public class CCLicenseStep extends AbstractProcessingStep { /** * log4j logger */ - private static Logger log = Logger.getLogger(CCLicenseStep.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(CCLicenseStep.class); protected final CreativeCommonsService creativeCommonsService = LicenseServiceFactory.getInstance() .getCreativeCommonsService(); diff --git a/dspace-api/src/main/java/org/dspace/submit/step/CompleteStep.java b/dspace-api/src/main/java/org/dspace/submit/step/CompleteStep.java index 81966fedc9..edb7fc977c 100644 --- a/dspace-api/src/main/java/org/dspace/submit/step/CompleteStep.java +++ b/dspace-api/src/main/java/org/dspace/submit/step/CompleteStep.java @@ -7,7 +7,7 @@ */ package org.dspace.submit.step; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.InProgressSubmission; import org.dspace.core.Context; import org.dspace.submit.AbstractProcessingStep; @@ -16,7 +16,7 @@ public class CompleteStep extends AbstractProcessingStep { /** * log4j logger */ - private static Logger log = Logger.getLogger(CompleteStep.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(CompleteStep.class); @Override public void doPreProcessing(Context context, InProgressSubmission wsi) { diff --git a/dspace-api/src/main/java/org/dspace/submit/step/DescribeStep.java b/dspace-api/src/main/java/org/dspace/submit/step/DescribeStep.java index c1d679eab1..ae58efc1c3 100644 --- a/dspace-api/src/main/java/org/dspace/submit/step/DescribeStep.java +++ b/dspace-api/src/main/java/org/dspace/submit/step/DescribeStep.java @@ -7,7 +7,8 @@ */ package org.dspace.submit.step; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; /** * @author Luigi Andrea Pascarelli (luigiandrea.pascarelli at 4science.it) @@ -16,6 +17,6 @@ public class DescribeStep extends MetadataStep { /** * log4j logger */ - private static Logger log = Logger.getLogger(DescribeStep.class); + private static final Logger log = LogManager.getLogger(); } diff --git a/dspace-api/src/main/java/org/dspace/submit/step/LicenseStep.java b/dspace-api/src/main/java/org/dspace/submit/step/LicenseStep.java index d54dbac79c..8eddebee2c 100644 --- a/dspace-api/src/main/java/org/dspace/submit/step/LicenseStep.java +++ b/dspace-api/src/main/java/org/dspace/submit/step/LicenseStep.java @@ -7,7 +7,7 @@ */ package org.dspace.submit.step; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.InProgressSubmission; import org.dspace.core.Context; import org.dspace.submit.AbstractProcessingStep; @@ -17,7 +17,7 @@ public class LicenseStep extends AbstractProcessingStep { /** * log4j logger */ - private static Logger log = Logger.getLogger(LicenseStep.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(LicenseStep.class); @Override public void doPreProcessing(Context context, InProgressSubmission wsi) { diff --git a/dspace-api/src/main/java/org/dspace/submit/step/MetadataStep.java b/dspace-api/src/main/java/org/dspace/submit/step/MetadataStep.java index c0998bcb2e..0ef9fb00ce 100644 --- a/dspace-api/src/main/java/org/dspace/submit/step/MetadataStep.java +++ b/dspace-api/src/main/java/org/dspace/submit/step/MetadataStep.java @@ -19,7 +19,7 @@ import java.util.Set; import gr.ekt.bte.core.DataLoader; import gr.ekt.bte.core.Record; import gr.ekt.bte.core.Value; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.http.HttpException; import org.apache.log4j.Logger; import org.dspace.authorize.AuthorizeException; diff --git a/dspace-api/src/main/java/org/dspace/submit/step/SelectCollectionStep.java b/dspace-api/src/main/java/org/dspace/submit/step/SelectCollectionStep.java index 11b9b3e126..ff3e97023c 100644 --- a/dspace-api/src/main/java/org/dspace/submit/step/SelectCollectionStep.java +++ b/dspace-api/src/main/java/org/dspace/submit/step/SelectCollectionStep.java @@ -7,14 +7,14 @@ */ package org.dspace.submit.step; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.InProgressSubmission; import org.dspace.core.Context; import org.dspace.submit.AbstractProcessingStep; public class SelectCollectionStep extends AbstractProcessingStep { - private static final Logger log = Logger.getLogger(SelectCollectionStep.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(SelectCollectionStep.class); @Override public void doPreProcessing(Context context, InProgressSubmission wsi) { diff --git a/dspace-api/src/main/java/org/dspace/submit/step/StartSubmissionLookupStep.java b/dspace-api/src/main/java/org/dspace/submit/step/StartSubmissionLookupStep.java index 903100d1f6..b10b1895bb 100644 --- a/dspace-api/src/main/java/org/dspace/submit/step/StartSubmissionLookupStep.java +++ b/dspace-api/src/main/java/org/dspace/submit/step/StartSubmissionLookupStep.java @@ -7,7 +7,8 @@ */ package org.dspace.submit.step; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.dspace.content.InProgressSubmission; import org.dspace.core.Context; import org.dspace.submit.AbstractProcessingStep; @@ -16,8 +17,7 @@ public class StartSubmissionLookupStep extends AbstractProcessingStep { /** * log4j logger */ - private static Logger log = Logger - .getLogger(StartSubmissionLookupStep.class); + private static Logger log = LogManager.getLogger(StartSubmissionLookupStep.class); @Override public void doPreProcessing(Context context, InProgressSubmission wsi) { diff --git a/dspace-api/src/main/java/org/dspace/submit/step/UploadStep.java b/dspace-api/src/main/java/org/dspace/submit/step/UploadStep.java index 8e528eb0a4..764f332c1d 100644 --- a/dspace-api/src/main/java/org/dspace/submit/step/UploadStep.java +++ b/dspace-api/src/main/java/org/dspace/submit/step/UploadStep.java @@ -7,7 +7,7 @@ */ package org.dspace.submit.step; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.InProgressSubmission; import org.dspace.core.Context; import org.dspace.submit.AbstractProcessingStep; @@ -16,7 +16,7 @@ public class UploadStep extends AbstractProcessingStep { /** * log4j logger */ - private static final Logger log = Logger.getLogger(UploadStep.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(UploadStep.class); @Override public void doPreProcessing(Context context, InProgressSubmission wsi) { diff --git a/dspace-api/src/main/java/org/dspace/submit/step/UploadWithEmbargoStep.java b/dspace-api/src/main/java/org/dspace/submit/step/UploadWithEmbargoStep.java index 572b252773..d67887ccb5 100644 --- a/dspace-api/src/main/java/org/dspace/submit/step/UploadWithEmbargoStep.java +++ b/dspace-api/src/main/java/org/dspace/submit/step/UploadWithEmbargoStep.java @@ -7,12 +7,12 @@ */ package org.dspace.submit.step; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; public class UploadWithEmbargoStep extends UploadStep { /** * log4j logger */ - private static Logger log = Logger.getLogger(UploadWithEmbargoStep.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(UploadWithEmbargoStep.class); } diff --git a/dspace-api/src/main/java/org/dspace/submit/util/SubmissionLookupPublication.java b/dspace-api/src/main/java/org/dspace/submit/util/SubmissionLookupPublication.java index e5b51cf95b..85c1fe7266 100644 --- a/dspace-api/src/main/java/org/dspace/submit/util/SubmissionLookupPublication.java +++ b/dspace-api/src/main/java/org/dspace/submit/util/SubmissionLookupPublication.java @@ -17,7 +17,7 @@ import java.util.Set; import gr.ekt.bte.core.MutableRecord; import gr.ekt.bte.core.StringValue; import gr.ekt.bte.core.Value; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.dspace.submit.lookup.SubmissionLookupDataLoader; /** diff --git a/dspace-api/src/main/java/org/dspace/testing/PubMedToImport.java b/dspace-api/src/main/java/org/dspace/testing/PubMedToImport.java index 52c5599b3e..ec20f3f911 100644 --- a/dspace-api/src/main/java/org/dspace/testing/PubMedToImport.java +++ b/dspace-api/src/main/java/org/dspace/testing/PubMedToImport.java @@ -21,8 +21,8 @@ import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.Option; import org.apache.commons.cli.Options; import org.apache.commons.cli.PosixParser; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.jdom.Document; import org.jdom.Element; import org.jdom.output.Format; @@ -46,7 +46,7 @@ import org.xml.sax.helpers.DefaultHandler; * which can then be loaded into DSpace using ItemImport. */ public class PubMedToImport { - private static final Logger log = Logger.getLogger(PubMedToImport.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(PubMedToImport.class); private static File outputDir = null; diff --git a/dspace-api/src/main/java/org/dspace/text/filter/MARC21InitialArticleWord.java b/dspace-api/src/main/java/org/dspace/text/filter/MARC21InitialArticleWord.java index 3985f19320..c82b9ccfcf 100644 --- a/dspace-api/src/main/java/org/dspace/text/filter/MARC21InitialArticleWord.java +++ b/dspace-api/src/main/java/org/dspace/text/filter/MARC21InitialArticleWord.java @@ -15,8 +15,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import org.apache.commons.lang.ArrayUtils; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang3.StringUtils; import org.dspace.services.factory.DSpaceServicesFactory; /** diff --git a/dspace-api/src/main/java/org/dspace/usage/LoggerUsageEventListener.java b/dspace-api/src/main/java/org/dspace/usage/LoggerUsageEventListener.java index 9ffcf78110..aa24db0775 100644 --- a/dspace-api/src/main/java/org/dspace/usage/LoggerUsageEventListener.java +++ b/dspace-api/src/main/java/org/dspace/usage/LoggerUsageEventListener.java @@ -7,7 +7,7 @@ */ package org.dspace.usage; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.DSpaceObject; import org.dspace.content.Item; import org.dspace.core.Constants; @@ -23,8 +23,7 @@ public class LoggerUsageEventListener extends AbstractUsageEventListener { /** * log4j category */ - private static Logger log = Logger - .getLogger(LoggerUsageEventListener.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(LoggerUsageEventListener.class); @Override public void receiveEvent(Event event) { diff --git a/dspace-api/src/main/java/org/dspace/util/SolrImportExport.java b/dspace-api/src/main/java/org/dspace/util/SolrImportExport.java index b0ab3b4005..2d5449637f 100644 --- a/dspace-api/src/main/java/org/dspace/util/SolrImportExport.java +++ b/dspace-api/src/main/java/org/dspace/util/SolrImportExport.java @@ -27,8 +27,8 @@ import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; import org.apache.commons.cli.PosixParser; import org.apache.commons.io.FileUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.impl.HttpSolrServer; @@ -95,7 +95,7 @@ public class SolrImportExport { private static final String MULTIPLE_VALUES_SPLITTER = ","; - private static final Logger log = Logger.getLogger(SolrImportExport.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(SolrImportExport.class); /** * Default constructor diff --git a/dspace-api/src/main/java/org/dspace/util/SolrUpgradePre6xStatistics.java b/dspace-api/src/main/java/org/dspace/util/SolrUpgradePre6xStatistics.java new file mode 100644 index 0000000000..aa3cba4618 --- /dev/null +++ b/dspace-api/src/main/java/org/dspace/util/SolrUpgradePre6xStatistics.java @@ -0,0 +1,699 @@ +/** + * The contents of this file are subject to the license and copyright + * detailed in the LICENSE and NOTICE files at the root of the source + * tree and available online at + * + * http://www.dspace.org/license/ + */ +package org.dspace.util; + +import java.io.IOException; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Date; +import java.util.List; +import java.util.UUID; + +import org.apache.commons.cli.CommandLine; +import org.apache.commons.cli.CommandLineParser; +import org.apache.commons.cli.HelpFormatter; +import org.apache.commons.cli.Options; +import org.apache.commons.cli.ParseException; +import org.apache.commons.cli.PosixParser; +import org.apache.log4j.Logger; +import org.apache.solr.client.solrj.SolrQuery; +import org.apache.solr.client.solrj.SolrServerException; +import org.apache.solr.client.solrj.impl.HttpSolrServer; +import org.apache.solr.client.solrj.response.FacetField; +import org.apache.solr.client.solrj.response.QueryResponse; +import org.apache.solr.client.solrj.util.ClientUtils; +import org.apache.solr.common.SolrDocument; +import org.apache.solr.common.SolrDocumentList; +import org.apache.solr.common.SolrInputDocument; +import org.apache.solr.common.SolrInputField; +import org.dspace.content.Bitstream; +import org.dspace.content.Community; +import org.dspace.content.Item; +import org.dspace.content.factory.ContentServiceFactory; +import org.dspace.content.service.BitstreamService; +import org.dspace.content.service.CollectionService; +import org.dspace.content.service.CommunityService; +import org.dspace.content.service.ItemService; +import org.dspace.core.Constants; +import org.dspace.core.Context; +import org.dspace.eperson.EPerson; +import org.dspace.eperson.Group; +import org.dspace.eperson.factory.EPersonServiceFactory; +import org.dspace.eperson.service.EPersonService; +import org.dspace.eperson.service.GroupService; +import org.dspace.services.ConfigurationService; +import org.dspace.services.factory.DSpaceServicesFactory; + +/** + * CLI tool to upgrade legacy id references in SOLR statistics to DSpace 6 UUID's. + * + * This command will need to be run iteratively over each statistics shard until all legacy id values have + * been replaced. + * + * If a legacy id cannot be resolved from the database, the id will remain unchanged. + * "field:* AND NOT(field:*-*)" can be used to locate legacy ids + * + * See DS-3602 for the origin of this issue. This code is targeted for inclusion in the DSpace 6.1 release. + * + * Recommendation: for a large repository, run this command with -Xmx2000m if possible. + * + * To process 1,000,000 statistics records, it took 60 min to complete. + * + * @author Terry Brady, Georgetown University Library + */ +public class SolrUpgradePre6xStatistics { + //Command line parameter constants + private static final String INDEX_NAME_OPTION = "i"; + private static final String NUMREC_OPTION = "n"; + private static final String BATCH_OPTION = "b"; + private static final String TYPE_OPTION = "t"; + private static final String HELP_OPTION = "h"; + private static final int NUMREC_DEFAULT = 100000; + private static final int BATCH_DEFAULT = 10000; + + //After processing each batch of updates to SOLR, evaulate if the hibernate cache needs to be cleared + private static final int CACHE_LIMIT = 20000; + + private static final String INDEX_DEFAULT = "statistics"; + private static final String MIGQUERY = + "(id:* AND -(id:*-*)) OR (scopeId:* AND -(scopeId:*-*)) OR (epersonid:* AND -(epersonid:*-*))"; + + //Counters to determine the number of items to process + private int numRec = NUMREC_DEFAULT; + private int batchSize = BATCH_DEFAULT; + + //Cache management + private int numProcessed = 0; + private long totalCache = 0; + private long numUncache = 0; + private List docs = new ArrayList(); + private Context context; + + //Enum to identify the named SOLR statistics fields to update + private enum FIELD { + id, + scopeId, + owningComm, + owningColl, + owningItem, + epersonid, + owner, + submitter, + actor; + } + + //Logger + private static final Logger log = Logger.getLogger(SolrUpgradePre6xStatistics.class); + + //DSpace Servcies + private ConfigurationService configurationService = DSpaceServicesFactory.getInstance().getConfigurationService(); + protected CommunityService communityService = ContentServiceFactory.getInstance().getCommunityService(); + protected CollectionService collectionService = ContentServiceFactory.getInstance().getCollectionService(); + protected ItemService itemService = ContentServiceFactory.getInstance().getItemService(); + protected BitstreamService bitstreamService = ContentServiceFactory.getInstance().getBitstreamService(); + protected EPersonService epersonService = EPersonServiceFactory.getInstance().getEPersonService(); + protected GroupService groupService = EPersonServiceFactory.getInstance().getGroupService(); + + // This code will operate on one shard at a time, therefore the SOLR web service will be accessed directly rather + // than make use of the DSpace Solr Logger which only writes to the current shard + private HttpSolrServer server; + + //Allows for smart use of hibernate cache + private Item lastItem = null; + private Bitstream lastBitstream = null; + + //Report on process times + private long startTime = -1; + private long lastTime = -1; + + + /** + * Construct the utility class from the command line options + * @param indexName name of the statistics shard to update + * @param numRec maximum number of records to process + * @throws IOException + * @throws SolrServerException + */ + public SolrUpgradePre6xStatistics(String indexName, int numRec, int batchSize) + throws SolrServerException, IOException { + String serverPath = configurationService.getProperty("solr-statistics.server"); + serverPath = serverPath.replaceAll("statistics$", indexName); + System.out.println("Connecting to " + serverPath); + server = new HttpSolrServer(serverPath); + server.setMaxTotalConnections(1); + this.numRec = numRec; + this.batchSize = batchSize; + refreshContext(); + } + + /* + * Process a batch of updates to SOLR + */ + private void batchUpdateStats() throws SolrServerException, IOException { + if (docs.size() > 0) { + server.add(docs); + server.commit(true, true); + docs.clear(); + } + } + + /** + * Refresh the DSpace Context object in order to periodically release objects from memory + * @throws IOException + * @throws SolrServerException + */ + private void refreshContext() throws SolrServerException, IOException { + if (context != null) { + try { + totalCache += numUncache + context.getCacheSize(); + } catch (SQLException e) { + log.warn(e.getMessage()); + } + } + this.context = new Context(Context.Mode.READ_ONLY); + lastItem = null; + lastBitstream = null; + numUncache = 0; + } + + /* + * Compute the number of items that were cached by hibernate since the context was cleared. + */ + private long getCacheCounts(boolean fromStart) { + long count = 0; + try { + count = context.getCacheSize(); + } catch (Exception e) { + //no action + } + count += this.numUncache; + if (fromStart) { + count += totalCache; + } + return count; + } + + /** + * Compute the time since the last batch was processed + * + * @param fromStart + * if true, report on processing time since the start of the program + * @return the time in ms since the start time + */ + private long logTime(boolean fromStart) { + long ret = 0; + long cur = new Date().getTime(); + if (lastTime == -1) { + startTime = cur; + } else if (fromStart) { + ret = cur - startTime; + } else { + ret = cur - lastTime; + } + lastTime = cur; + return ret; + } + + /* + * Format ms count as h:mm:ss + * + * @param dur Duration in ms + * + * @return duration formatted as h:mm:ss + */ + private String duration(long dur) { + long sec = dur / 1000; + long hh = sec / 3600; + long mm = (sec % 3600) / 60; + long ss = (sec % 60); + return String.format("%d:%02d:%02d", hh, mm, ss); + } + + /** + * Print a status message appended with the processing time for the operation + * + * @param header + * Message to display + * @param fromStart + * if true, report on processing time since the start of the program + */ + private void printTime(int numProcessed, boolean fromStart) { + long dur = logTime(fromStart); + long totalDur = logTime(true); + String stotalDur = duration(totalDur); + long cacheSize = 0; + try { + cacheSize = context.getCacheSize(); + } catch (SQLException e) { + log.error("Cannot get cache size", e); + } + String label = fromStart ? "TOTAL" : "Processed"; + System.out.println(String.format("%s (%s; %s; %s)", + String.format("\t%,12d %10s...", numProcessed, label), + String.format("%,6d sec; %s", dur / 1000, stotalDur), + String.format("DB cache: %,6d/%,8d", cacheSize, getCacheCounts(fromStart)), + String.format("Docs: %,6d", docs.size()))); + } + + /* + * Create command line option processor + */ + private static Options makeOptions() { + Options options = new Options(); + options.addOption(HELP_OPTION, "help", false, "Get help on options for this command."); + options.addOption(INDEX_NAME_OPTION, "index-name", true, + "The names of the indexes to process. At least one is required (default=statistics)"); + options.addOption(NUMREC_OPTION, "num-rec", true, "Total number of records to update (defaut=100,000)."); + options.addOption(BATCH_OPTION, "batch-size", true, + "Number of records to batch update to SOLR at one time (default=10,000)."); + return options; + } + + /** + * A utility method to print out all available command-line options and exit + * given the specified code. + * + * @param options + * the supported options. + * @param exitCode + * the exit code to use. The method will call System#exit(int) with + * the given code. + */ + private static void printHelpAndExit(Options options, int exitCode) { + HelpFormatter myhelp = new HelpFormatter(); + myhelp.printHelp(SolrUpgradePre6xStatistics.class.getSimpleName() + "\n", options); + System.out.println("\n\nCommand Defaults"); + System.out.println( + "\tsolr-upgrade-statistics-6x [-i statistics] [-n num_recs_to_process] [-b num_rec_to_update_at_once]"); + System.out.println(""); + System.out.println( + "\tAfter upgrading to DSpace 6, this process should be run iteratively over every statistics shard "); + System.out.println("\t\tuntil there are no remaining records with legacy ids present."); + System.out.println("\t\tThis process can be run while the system is in use."); + System.out.println(""); + System.out.println("\tIt will take 20-30 min to process 1,000,000 legacy records. "); + System.out.println(""); + System.out.println("\tUse the -n option to manage the workload on your server. "); + System.out.println("\t\tTo process all records, set -n to 10000000 or to 100000000 (10M or 100M)"); + System.out.println("\tIf possible, please allocate 2GB of memory to this process (e.g. -Xmx2000m)"); + System.out.println(""); + System.out.println("\tThis process will rewrite most solr statistics records and may temporarily double "); + System.out.println( + "\t\tthe size of your statistics repositories. Consider optimizing your solr repos when complete."); + + System.exit(exitCode); + } + + /** + * Entry point for command-line invocation + * + * @param args + * command-line arguments; see help for description + * @throws ParseException + * if the command-line arguments cannot be parsed + */ + public static void main(String[] args) throws ParseException { + CommandLineParser parser = new PosixParser(); + Options options = makeOptions(); + + System.out.println(" * This process should be run iteratively over every statistics shard "); + System.out.println(" * until there are no remaining records with legacy ids present."); + System.out.println(" * This process can be run while the system is in use."); + System.out.println(" * It is likely to take 1 hour/1,000,000 legacy records to be udpated."); + System.out.println(" *"); + System.out.println(" * This process will rewrite most solr statistics records and may temporarily double "); + System.out.println( + " *\tthe size of your statistics repositories. Consider optimizing your solr repos when complete."); + System.out.println(" * -------------------------------------------------------------------"); + + String indexName = INDEX_DEFAULT; + int numrec = NUMREC_DEFAULT; + int batchSize = BATCH_DEFAULT; + try { + CommandLine line = parser.parse(options, args); + if (line.hasOption(HELP_OPTION)) { + printHelpAndExit(options, 0); + } + + if (line.hasOption(INDEX_NAME_OPTION)) { + indexName = line.getOptionValue(INDEX_NAME_OPTION, INDEX_DEFAULT); + } else { + System.err.println("No index name provided, defaulting to : " + INDEX_DEFAULT); + } + + if (line.hasOption(NUMREC_OPTION)) { + numrec = Integer.parseInt(line.getOptionValue(NUMREC_OPTION, "" + NUMREC_DEFAULT)); + } + if (line.hasOption(BATCH_OPTION)) { + batchSize = Integer.parseInt(line.getOptionValue(BATCH_OPTION, "" + BATCH_DEFAULT)); + } + + } catch (ParseException e) { + System.err.println("Cannot read command options"); + printHelpAndExit(options, 1); + } + + try { + SolrUpgradePre6xStatistics upgradeStats = new SolrUpgradePre6xStatistics(indexName, numrec, batchSize); + upgradeStats.run(); + } catch (SolrServerException e) { + log.error("Error querying stats", e); + } catch (SQLException e) { + log.error("Error querying stats", e); + } catch (IOException e) { + log.error("Error querying stats", e); + } + } + + /* + * Report on the existence of legacy id records within a shard + */ + private void runReport() throws SolrServerException { + System.out.println(); + System.out.println("================================================================="); + System.out.println("\t*** Statistics Records with Legacy Id ***\n"); + long total = runReportQuery(); + System.out.println("\t--------------------------------------"); + System.out.println(String.format("\t%,12d\t%s", total, "TOTAL")); + System.out.println("================================================================="); + System.out.println(); + } + + /* + * Report on the existence of specific legacy id records within a shard + */ + private long runReportQuery() throws SolrServerException { + StringBuilder sb = new StringBuilder(MIGQUERY); + SolrQuery sQ = new SolrQuery(); + sQ.setQuery(sb.toString()); + sQ.setFacet(true); + sQ.addFacetField("type"); + sQ.addFacetField("scopeType"); + QueryResponse sr = server.query(sQ); + + long total = 0; + long unexpected = 0; + for (FacetField ff : sr.getFacetFields()) { + String s = ff.getName().equals("type") ? "View" : "Search"; + for (FacetField.Count count : ff.getValues()) { + String name = count.getName(); + int id = Integer.parseInt(name); + if (id == Constants.COMMUNITY) { + name = "Community " + s; + } else if (id == Constants.COLLECTION) { + name = "Collection " + s; + } else if (id == Constants.ITEM) { + name = "Item " + s; + } else if (id == Constants.BITSTREAM) { + name = "Bistream " + s; + } else { + /* + * In testing, I discovered some unexpected values in the scopeType field. It + * looks like they may have been a result of a CSV import/export error. This + * will group any unexpected values into one report line. + */ + unexpected += count.getCount(); + continue; + } + System.out.println(String.format("\t%,12d\t%s", count.getCount(), name)); + total += count.getCount(); + } + } + if (unexpected > 0) { + System.out.println(String.format("\t%,12d\t%s", unexpected, "Unexpected Type & Full Site")); + total += unexpected; + } + long rem = sr.getResults().getNumFound() - total; + if (rem > 0) { + System.out.println(String.format("\t%,12d\t%s", rem, "Other Records")); + total += rem; + } + return total; + } + + /* + * Process records with a legacy id. From the command line, the user may specify + * records of a specific type to update Otherwise, the following sequence will + * be applied in order to optimize hibernate caching. + * + * Communities and Collections - retain in the cache since each is likely to be + * re-used Items - retain in the cache until a new item is processed Bitstreams + * - retain in the cache until a new bitstream is processed + */ + private void run() throws SolrServerException, SQLException, IOException { + runReport(); + logTime(false); + for (int processed = updateRecords(MIGQUERY); (processed != 0) + && (numProcessed < numRec); processed = updateRecords(MIGQUERY)) { + printTime(numProcessed, false); + batchUpdateStats(); + if (context.getCacheSize() > CACHE_LIMIT) { + refreshContext(); + } + } + printTime(numProcessed, true); + + if (numProcessed > 0) { + runReport(); + } + } + + /* + * Update records associated with a particular object id + * + * @param query Query to retrieve all of the statistics records associated with + * a particular object + * + * @param field Field to use for grouping records + * + * @return number of items processed. 0 indicates that no more work is available + * (or the max processed has been reached). + */ + private int updateRecords(String query) throws SolrServerException, SQLException, IOException { + int initNumProcessed = numProcessed; + SolrQuery sQ = new SolrQuery(); + sQ.setQuery(query); + sQ.setRows(batchSize); + + // Ensure that items are grouped by id + // Sort by id fails due to presense of id and string fields. The ord function + // seems to help + sQ.addSort("type", SolrQuery.ORDER.desc); + sQ.addSort("scopeType", SolrQuery.ORDER.desc); + sQ.addSort("ord(owningItem)", SolrQuery.ORDER.desc); + sQ.addSort("id", SolrQuery.ORDER.asc); + sQ.addSort("scopeId", SolrQuery.ORDER.asc); + + QueryResponse sr = server.query(sQ); + SolrDocumentList sdl = sr.getResults(); + + for (int i = 0; i < sdl.size() && (numProcessed < numRec); i++) { + SolrDocument sd = sdl.get(i); + SolrInputDocument input = ClientUtils.toSolrInputDocument(sd); + input.remove("_version_"); + for (FIELD col : FIELD.values()) { + mapField(input, col); + } + + docs.add(input); + ++numProcessed; + } + return numProcessed - initNumProcessed; + } + + /* + * Map solr fields from legacy ids to UUIDs. + * + * The id field is interpreted by the type field. The scopeId field is + * interpreted by scopeType field. + * + * Legacy ids will be unchanged if they cannot be mapped + * + * @param input The SOLR statistics document to be updated + * + * @param col The SOLR field to update (if present) + */ + private void mapField(SolrInputDocument input, FIELD col) throws SQLException { + SolrInputField ifield = input.get(col.name()); + if (ifield != null) { + Collection vals = ifield.getValues(); + ArrayList newvals = new ArrayList<>(); + for (Object ovalx : vals) { + //DS-3436 documented an issue in which multi-values in shards were converted to a comma separated string + //It also produced strings containing "\" at the end of a value + for (String oval: ovalx.toString().split(",")) { + oval = oval.replace("\\",""); + try { + UUID uuid = null; + if (col == FIELD.owner) { + if (oval.length() > 1) { + String owntype = oval.substring(0, 1); + int legacy = Integer.parseInt(oval.substring(1)); + uuid = mapOwner(owntype, legacy); + } + } else { + int legacy = Integer.parseInt(oval); + if (col == FIELD.id) { + Object otype = input.getFieldValue("type"); + if (otype != null) { + int type = Integer.parseInt(otype.toString()); + uuid = mapType(type, legacy); + } + } else if (col == FIELD.scopeId) { + Object otype = input.getFieldValue("scopeType"); + if (otype != null) { + int type = Integer.parseInt(otype.toString()); + uuid = mapType(type, legacy); + } + } else { + uuid = mapId(col, legacy); + } + } + if (uuid != null) { + if (!newvals.contains(uuid.toString())) { + newvals.add(uuid.toString()); + } + } else { + String s = oval + "-unmigrated"; + if (!newvals.contains(s)) { + newvals.add(s); + } + } + } catch (NumberFormatException e) { + log.warn("Non numeric legacy id " + col.name() + ":" + oval); + } + } + } + if (newvals.size() > 0) { + input.removeField(col.name()); + for (String nv : newvals) { + input.addField(col.name(), nv); + } + } + } + } + + /* + * Determine if the last processed item should be cleared from the hibernate + * cache + * + * @param item Current item being processed + */ + private void checkLastItem(Item item) throws SQLException { + if (item != null) { + if (lastItem == null) { + lastItem = item; + } else if (!lastItem.getID().equals(item.getID())) { + numUncache++; + context.uncacheEntity(lastItem); + lastItem = item; + } + } + } + + /* + * Determine if the last processed bitstream should be cleared from the + * hibernate cache + * + * @param bitstream Current bitstream being processed + */ + private void checkLastBitstream(Bitstream bitstream) throws SQLException { + if (bitstream != null) { + if (lastBitstream == null) { + lastBitstream = bitstream; + } else if (!lastBitstream.getID().equals(bitstream.getID())) { + numUncache++; + context.uncacheEntity(lastBitstream); + lastBitstream = bitstream; + } + } + } + + /* + * Retrieve the UUID corresponding to a legacy id found in a SOLR statistics + * record + * + * @param col Solr Statistic Field being processed + * + * @param val Value to lookup as a legacy id + */ + private UUID mapId(FIELD col, int val) throws SQLException { + + if (col == FIELD.owningComm) { + Community comm = communityService.findByLegacyId(context, val); + return comm == null ? null : comm.getID(); + } + if (col == FIELD.owningColl) { + org.dspace.content.Collection coll = collectionService.findByLegacyId(context, val); + return coll == null ? null : coll.getID(); + } + if (col == FIELD.owningItem) { + Item item = itemService.findByLegacyId(context, val); + checkLastItem(item); + return item == null ? null : item.getID(); + } + if (col == FIELD.epersonid || col == FIELD.actor || col == FIELD.submitter) { + EPerson per = epersonService.findByLegacyId(context, val); + return per == null ? null : per.getID(); + } + return null; + } + + /* + * Retrieve the UUID corresponding to a legacy id found in a SOLR statistics + * record + * + * @param type Identifying type field for id OR scopeType field for scopeId + * + * @param val Value to lookup as a legacy id + */ + private UUID mapType(int type, int val) throws SQLException { + if (type == Constants.COMMUNITY) { + Community comm = communityService.findByLegacyId(context, val); + return comm == null ? null : comm.getID(); + } + if (type == Constants.COLLECTION) { + org.dspace.content.Collection coll = collectionService.findByLegacyId(context, val); + return coll == null ? null : coll.getID(); + } + if (type == Constants.ITEM) { + Item item = itemService.findByLegacyId(context, val); + checkLastItem(item); + return item == null ? null : item.getID(); + } + if (type == Constants.BITSTREAM) { + Bitstream bit = bitstreamService.findByLegacyId(context, val); + UUID uuid = bit == null ? null : bit.getID(); + // A bitstream is unlikely to be processed more than once, to clear immediately + checkLastBitstream(bit); + return uuid; + } + return null; + } + + /* + * Retrieve the UUID corresponding to a legacy owner found in a SOLR statistics + * record Legacy owner fields are prefixed in solr with "e" or "g" + * + * @param owntype Identifying type field (e - eperson, g - group) + * + * @param val Value to lookup as a legacy id + */ + private UUID mapOwner(String owntype, int val) throws SQLException { + if (owntype.equals("e")) { + EPerson per = epersonService.findByLegacyId(context, val); + return per == null ? null : per.getID(); + } else if (owntype.equals("g")) { + Group perg = groupService.findByLegacyId(context, val); + return perg == null ? null : perg.getID(); + } + return null; + } + +} \ No newline at end of file diff --git a/dspace-api/src/main/java/org/dspace/versioning/DefaultItemVersionProvider.java b/dspace-api/src/main/java/org/dspace/versioning/DefaultItemVersionProvider.java index 9f02b18a95..7903a49c31 100644 --- a/dspace-api/src/main/java/org/dspace/versioning/DefaultItemVersionProvider.java +++ b/dspace-api/src/main/java/org/dspace/versioning/DefaultItemVersionProvider.java @@ -11,7 +11,7 @@ import java.io.IOException; import java.sql.SQLException; import java.util.List; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.authorize.ResourcePolicy; import org.dspace.content.Item; @@ -32,7 +32,7 @@ import org.springframework.beans.factory.annotation.Autowired; */ public class DefaultItemVersionProvider extends AbstractVersionProvider implements ItemVersionProvider { - Logger log = Logger.getLogger(DefaultItemVersionProvider.class); + Logger log = org.apache.logging.log4j.LogManager.getLogger(DefaultItemVersionProvider.class); @Autowired(required = true) protected WorkspaceItemService workspaceItemService; diff --git a/dspace-api/src/main/java/org/dspace/versioning/VersionHistory.java b/dspace-api/src/main/java/org/dspace/versioning/VersionHistory.java index a8efdc329a..0f5b9384bd 100644 --- a/dspace-api/src/main/java/org/dspace/versioning/VersionHistory.java +++ b/dspace-api/src/main/java/org/dspace/versioning/VersionHistory.java @@ -20,7 +20,7 @@ import javax.persistence.OrderBy; import javax.persistence.SequenceGenerator; import javax.persistence.Table; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.core.Context; import org.dspace.core.ReloadableEntity; import org.hibernate.proxy.HibernateProxyHelper; @@ -35,7 +35,7 @@ import org.hibernate.proxy.HibernateProxyHelper; @Table(name = "versionhistory") public class VersionHistory implements ReloadableEntity { - private static final Logger log = Logger.getLogger(VersionHistory.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(VersionHistory.class); @Id @Column(name = "versionhistory_id") diff --git a/dspace-api/src/main/java/org/dspace/workflowbasic/BasicWorkflowItemServiceImpl.java b/dspace-api/src/main/java/org/dspace/workflowbasic/BasicWorkflowItemServiceImpl.java index 86134c62b5..2751fd33e1 100644 --- a/dspace-api/src/main/java/org/dspace/workflowbasic/BasicWorkflowItemServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/workflowbasic/BasicWorkflowItemServiceImpl.java @@ -12,7 +12,7 @@ import java.sql.SQLException; import java.util.Iterator; import java.util.List; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Collection; import org.dspace.content.Item; @@ -37,7 +37,7 @@ public class BasicWorkflowItemServiceImpl implements BasicWorkflowItemService { /** * log4j category */ - protected static Logger log = Logger.getLogger(BasicWorkflowItem.class); + protected static Logger log = org.apache.logging.log4j.LogManager.getLogger(BasicWorkflowItem.class); @Autowired(required = true) protected BasicWorkflowItemDAO workflowItemDAO; diff --git a/dspace-api/src/main/java/org/dspace/workflowbasic/BasicWorkflowServiceImpl.java b/dspace-api/src/main/java/org/dspace/workflowbasic/BasicWorkflowServiceImpl.java index c20de75ff8..5bed335d8a 100644 --- a/dspace-api/src/main/java/org/dspace/workflowbasic/BasicWorkflowServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/workflowbasic/BasicWorkflowServiceImpl.java @@ -21,8 +21,8 @@ import java.util.UUID; import javax.mail.MessagingException; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.authorize.ResourcePolicy; import org.dspace.authorize.service.AuthorizeService; @@ -31,7 +31,7 @@ import org.dspace.content.Bundle; import org.dspace.content.Collection; import org.dspace.content.DCDate; import org.dspace.content.Item; -import org.dspace.content.MetadataSchema; +import org.dspace.content.MetadataSchemaEnum; import org.dspace.content.WorkspaceItem; import org.dspace.content.service.CollectionService; import org.dspace.content.service.InstallItemService; @@ -104,7 +104,7 @@ public class BasicWorkflowServiceImpl implements BasicWorkflowService { /** * log4j logger */ - private final Logger log = Logger.getLogger(BasicWorkflowServiceImpl.class); + private final Logger log = org.apache.logging.log4j.LogManager.getLogger(BasicWorkflowServiceImpl.class); @Override public int getWorkflowID(String state) { @@ -910,8 +910,8 @@ public class BasicWorkflowServiceImpl implements BasicWorkflowService { + rejection_message + " on " + now + " (GMT) "; // Add to item as a DC field - itemService - .addMetadata(context, myitem, MetadataSchema.DC_SCHEMA, "description", "provenance", "en", provDescription); + itemService.addMetadata(context, myitem, MetadataSchemaEnum.DC.getName(), + "description", "provenance", "en", provDescription); itemService.update(context, myitem); // convert into personal workspace @@ -1135,8 +1135,8 @@ public class BasicWorkflowServiceImpl implements BasicWorkflowService { provDescription += installItemService.getBitstreamProvenanceMessage(context, item); // Add to item as a DC field - itemService - .addMetadata(context, item, MetadataSchema.DC_SCHEMA, "description", "provenance", "en", provDescription); + itemService.addMetadata(context, item, MetadataSchemaEnum.DC.getName(), + "description", "provenance", "en", provDescription); itemService.update(context, item); } @@ -1163,8 +1163,8 @@ public class BasicWorkflowServiceImpl implements BasicWorkflowService { provmessage += installItemService.getBitstreamProvenanceMessage(context, myitem); // Add message to the DC - itemService - .addMetadata(context, myitem, MetadataSchema.DC_SCHEMA, "description", "provenance", "en", provmessage); + itemService.addMetadata(context, myitem, MetadataSchemaEnum.DC.getName(), + "description", "provenance", "en", provmessage); itemService.update(context, myitem); } diff --git a/dspace-api/src/main/java/org/dspace/xmlworkflow/WorkflowUtils.java b/dspace-api/src/main/java/org/dspace/xmlworkflow/WorkflowUtils.java index 872ff2b21c..8c62ed919b 100644 --- a/dspace-api/src/main/java/org/dspace/xmlworkflow/WorkflowUtils.java +++ b/dspace-api/src/main/java/org/dspace/xmlworkflow/WorkflowUtils.java @@ -17,8 +17,8 @@ import java.util.HashMap; import java.util.LinkedHashMap; import javax.servlet.http.HttpServletRequest; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.app.util.Util; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Collection; @@ -47,7 +47,7 @@ public class WorkflowUtils extends Util { /** * log4j category */ - public static Logger log = Logger.getLogger(WorkflowUtils.class); + public static Logger log = org.apache.logging.log4j.LogManager.getLogger(WorkflowUtils.class); protected static final CollectionRoleService collectionRoleService = XmlWorkflowServiceFactory.getInstance().getCollectionRoleService(); diff --git a/dspace-api/src/main/java/org/dspace/xmlworkflow/XmlWorkflowFactoryImpl.java b/dspace-api/src/main/java/org/dspace/xmlworkflow/XmlWorkflowFactoryImpl.java index 7f1076b206..950dd4318e 100644 --- a/dspace-api/src/main/java/org/dspace/xmlworkflow/XmlWorkflowFactoryImpl.java +++ b/dspace-api/src/main/java/org/dspace/xmlworkflow/XmlWorkflowFactoryImpl.java @@ -18,7 +18,7 @@ import javax.annotation.PostConstruct; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.TransformerException; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.apache.xpath.XPathAPI; import org.dspace.content.Collection; import org.dspace.services.ConfigurationService; @@ -45,7 +45,7 @@ import org.w3c.dom.NodeList; */ public class XmlWorkflowFactoryImpl implements XmlWorkflowFactory { - private Logger log = Logger.getLogger(XmlWorkflowFactoryImpl.class); + private Logger log = org.apache.logging.log4j.LogManager.getLogger(XmlWorkflowFactoryImpl.class); @Autowired(required = true) protected ConfigurationService configurationService; diff --git a/dspace-api/src/main/java/org/dspace/xmlworkflow/XmlWorkflowServiceImpl.java b/dspace-api/src/main/java/org/dspace/xmlworkflow/XmlWorkflowServiceImpl.java index a6cbf73007..15358c6174 100644 --- a/dspace-api/src/main/java/org/dspace/xmlworkflow/XmlWorkflowServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/xmlworkflow/XmlWorkflowServiceImpl.java @@ -22,7 +22,7 @@ import javax.mail.MessagingException; import javax.servlet.http.HttpServletRequest; import org.apache.commons.collections4.CollectionUtils; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.authorize.ResourcePolicy; import org.dspace.authorize.service.AuthorizeService; @@ -31,7 +31,7 @@ import org.dspace.content.Bundle; import org.dspace.content.Collection; import org.dspace.content.DCDate; import org.dspace.content.Item; -import org.dspace.content.MetadataSchema; +import org.dspace.content.MetadataSchemaEnum; import org.dspace.content.MetadataValue; import org.dspace.content.WorkspaceItem; import org.dspace.content.service.InstallItemService; @@ -84,7 +84,7 @@ public class XmlWorkflowServiceImpl implements XmlWorkflowService { /* support for 'no notification' */ protected Map noEMail = new HashMap<>(); - private Logger log = Logger.getLogger(XmlWorkflowServiceImpl.class); + private Logger log = org.apache.logging.log4j.LogManager.getLogger(XmlWorkflowServiceImpl.class); @Autowired(required = true) protected AuthorizeService authorizeService; @@ -573,7 +573,7 @@ public class XmlWorkflowServiceImpl implements XmlWorkflowService { // Get title List titles = itemService - .getMetadata(item, MetadataSchema.DC_SCHEMA, "title", null, Item.ANY); + .getMetadata(item, MetadataSchemaEnum.DC.getName(), "title", null, Item.ANY); String title = ""; try { title = I18nUtil.getMessage("org.dspace.workflow.WorkflowManager.untitled"); @@ -874,7 +874,8 @@ public class XmlWorkflowServiceImpl implements XmlWorkflowService { // Add to item as a DC field itemService - .addMetadata(context, myitem, MetadataSchema.DC_SCHEMA, "description", "provenance", "en", provDescription); + .addMetadata(context, myitem, MetadataSchemaEnum.DC.getName(), + "description", "provenance", "en", provDescription); //Clear any workflow schema related metadata itemService @@ -1002,7 +1003,8 @@ public class XmlWorkflowServiceImpl implements XmlWorkflowService { // Add message to the DC itemService - .addMetadata(context, myitem, MetadataSchema.DC_SCHEMA, "description", "provenance", "en", provmessage); + .addMetadata(context, myitem, MetadataSchemaEnum.DC.getName(), + "description", "provenance", "en", provmessage); itemService.update(context, myitem); } diff --git a/dspace-api/src/main/java/org/dspace/xmlworkflow/migration/RestartWorkflow.java b/dspace-api/src/main/java/org/dspace/xmlworkflow/migration/RestartWorkflow.java index d64fa66843..a67a6d0cc3 100644 --- a/dspace-api/src/main/java/org/dspace/xmlworkflow/migration/RestartWorkflow.java +++ b/dspace-api/src/main/java/org/dspace/xmlworkflow/migration/RestartWorkflow.java @@ -15,7 +15,7 @@ import org.apache.commons.cli.CommandLineParser; import org.apache.commons.cli.HelpFormatter; import org.apache.commons.cli.Options; import org.apache.commons.cli.PosixParser; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.Item; import org.dspace.content.WorkspaceItem; import org.dspace.core.Context; @@ -41,7 +41,7 @@ public class RestartWorkflow { /** * log4j category */ - private static Logger log = Logger.getLogger(RestartWorkflow.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(RestartWorkflow.class); public static boolean useWorkflowSendEmail = false; diff --git a/dspace-api/src/main/java/org/dspace/xmlworkflow/state/actions/processingaction/AcceptEditRejectAction.java b/dspace-api/src/main/java/org/dspace/xmlworkflow/state/actions/processingaction/AcceptEditRejectAction.java index 072e2289d7..b83cfae00e 100644 --- a/dspace-api/src/main/java/org/dspace/xmlworkflow/state/actions/processingaction/AcceptEditRejectAction.java +++ b/dspace-api/src/main/java/org/dspace/xmlworkflow/state/actions/processingaction/AcceptEditRejectAction.java @@ -14,7 +14,7 @@ import javax.servlet.http.HttpServletRequest; import org.dspace.app.util.Util; import org.dspace.authorize.AuthorizeException; import org.dspace.content.DCDate; -import org.dspace.content.MetadataSchema; +import org.dspace.content.MetadataSchemaEnum; import org.dspace.core.Context; import org.dspace.xmlworkflow.factory.XmlWorkflowServiceFactory; import org.dspace.xmlworkflow.state.Step; @@ -112,7 +112,7 @@ public class AcceptEditRejectAction extends ProcessingAction { + usersName + " on " + now + " (GMT) "; // Add to item as a DC field - itemService.addMetadata(c, wfi.getItem(), MetadataSchema.DC_SCHEMA, "description", "provenance", "en", + itemService.addMetadata(c, wfi.getItem(), MetadataSchemaEnum.DC.getName(), "description", "provenance", "en", provDescription); itemService.update(c, wfi.getItem()); } diff --git a/dspace-api/src/main/java/org/dspace/xmlworkflow/state/actions/processingaction/FinalEditAction.java b/dspace-api/src/main/java/org/dspace/xmlworkflow/state/actions/processingaction/FinalEditAction.java index 2b05f3d0d1..50686f3993 100644 --- a/dspace-api/src/main/java/org/dspace/xmlworkflow/state/actions/processingaction/FinalEditAction.java +++ b/dspace-api/src/main/java/org/dspace/xmlworkflow/state/actions/processingaction/FinalEditAction.java @@ -13,7 +13,7 @@ import javax.servlet.http.HttpServletRequest; import org.dspace.authorize.AuthorizeException; import org.dspace.content.DCDate; -import org.dspace.content.MetadataSchema; +import org.dspace.content.MetadataSchemaEnum; import org.dspace.core.Context; import org.dspace.xmlworkflow.factory.XmlWorkflowServiceFactory; import org.dspace.xmlworkflow.state.Step; @@ -68,7 +68,7 @@ public class FinalEditAction extends ProcessingAction { + usersName + " on " + now + " (GMT) "; // Add to item as a DC field - itemService.addMetadata(c, wfi.getItem(), MetadataSchema.DC_SCHEMA, "description", "provenance", "en", + itemService.addMetadata(c, wfi.getItem(), MetadataSchemaEnum.DC.getName(), "description", "provenance", "en", provDescription); itemService.update(c, wfi.getItem()); } diff --git a/dspace-api/src/main/java/org/dspace/xmlworkflow/state/actions/processingaction/ReviewAction.java b/dspace-api/src/main/java/org/dspace/xmlworkflow/state/actions/processingaction/ReviewAction.java index 1db060d39d..50ca0c0e6c 100644 --- a/dspace-api/src/main/java/org/dspace/xmlworkflow/state/actions/processingaction/ReviewAction.java +++ b/dspace-api/src/main/java/org/dspace/xmlworkflow/state/actions/processingaction/ReviewAction.java @@ -14,7 +14,7 @@ import javax.servlet.http.HttpServletRequest; import org.dspace.app.util.Util; import org.dspace.authorize.AuthorizeException; import org.dspace.content.DCDate; -import org.dspace.content.MetadataSchema; +import org.dspace.content.MetadataSchemaEnum; import org.dspace.core.Context; import org.dspace.xmlworkflow.factory.XmlWorkflowServiceFactory; import org.dspace.xmlworkflow.state.Step; @@ -85,7 +85,7 @@ public class ReviewAction extends ProcessingAction { + usersName + " on " + now + " (GMT) "; // Add to item as a DC field - itemService.addMetadata(c, wfi.getItem(), MetadataSchema.DC_SCHEMA, "description", "provenance", "en", + itemService.addMetadata(c, wfi.getItem(), MetadataSchemaEnum.DC.getName(), "description", "provenance", "en", provDescription); itemService.update(c, wfi.getItem()); } diff --git a/dspace-api/src/main/java/org/dspace/xmlworkflow/state/actions/processingaction/ScoreEvaluationAction.java b/dspace-api/src/main/java/org/dspace/xmlworkflow/state/actions/processingaction/ScoreEvaluationAction.java index 97f26eb3c7..df06c6b0de 100644 --- a/dspace-api/src/main/java/org/dspace/xmlworkflow/state/actions/processingaction/ScoreEvaluationAction.java +++ b/dspace-api/src/main/java/org/dspace/xmlworkflow/state/actions/processingaction/ScoreEvaluationAction.java @@ -14,7 +14,7 @@ import javax.servlet.http.HttpServletRequest; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Item; -import org.dspace.content.MetadataSchema; +import org.dspace.content.MetadataSchemaEnum; import org.dspace.content.MetadataValue; import org.dspace.core.Context; import org.dspace.workflow.WorkflowException; @@ -66,8 +66,8 @@ public class ScoreEvaluationAction extends ProcessingAction { String provDescription = getProvenanceStartId() + " Approved for entry into archive with a score of: " + scoreMean; - itemService.addMetadata(c, wfi.getItem(), MetadataSchema.DC_SCHEMA, "description", "provenance", "en", - provDescription); + itemService.addMetadata(c, wfi.getItem(), MetadataSchemaEnum.DC.getName(), + "description", "provenance", "en", provDescription); itemService.update(c, wfi.getItem()); } if (hasPassed) { diff --git a/dspace-api/src/main/java/org/dspace/xmlworkflow/state/actions/processingaction/SingleUserReviewAction.java b/dspace-api/src/main/java/org/dspace/xmlworkflow/state/actions/processingaction/SingleUserReviewAction.java index 74eea2d448..215eaaf645 100644 --- a/dspace-api/src/main/java/org/dspace/xmlworkflow/state/actions/processingaction/SingleUserReviewAction.java +++ b/dspace-api/src/main/java/org/dspace/xmlworkflow/state/actions/processingaction/SingleUserReviewAction.java @@ -14,7 +14,7 @@ import javax.servlet.http.HttpServletRequest; import org.dspace.app.util.Util; import org.dspace.authorize.AuthorizeException; import org.dspace.content.DCDate; -import org.dspace.content.MetadataSchema; +import org.dspace.content.MetadataSchemaEnum; import org.dspace.core.Context; import org.dspace.xmlworkflow.factory.XmlWorkflowServiceFactory; import org.dspace.xmlworkflow.state.Step; @@ -91,7 +91,7 @@ public class SingleUserReviewAction extends ProcessingAction { + usersName + " on " + now + " (GMT) "; // Add to item as a DC field - itemService.addMetadata(c, wfi.getItem(), MetadataSchema.DC_SCHEMA, "description", "provenance", "en", + itemService.addMetadata(c, wfi.getItem(), MetadataSchemaEnum.DC.getName(), "description", "provenance", "en", provDescription); itemService.update(c, wfi.getItem()); } diff --git a/dspace-api/src/main/java/org/dspace/xmlworkflow/state/actions/userassignment/AutoAssignAction.java b/dspace-api/src/main/java/org/dspace/xmlworkflow/state/actions/userassignment/AutoAssignAction.java index d77ac39aaf..3c6ce50b0d 100644 --- a/dspace-api/src/main/java/org/dspace/xmlworkflow/state/actions/userassignment/AutoAssignAction.java +++ b/dspace-api/src/main/java/org/dspace/xmlworkflow/state/actions/userassignment/AutoAssignAction.java @@ -12,7 +12,7 @@ import java.sql.SQLException; import java.util.List; import javax.servlet.http.HttpServletRequest; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.core.Context; import org.dspace.core.LogManager; @@ -42,7 +42,7 @@ import org.springframework.beans.factory.annotation.Autowired; */ public class AutoAssignAction extends UserSelectionAction { - private final Logger log = Logger.getLogger(AutoAssignAction.class); + private final Logger log = org.apache.logging.log4j.LogManager.getLogger(AutoAssignAction.class); @Autowired(required = true) protected GroupService groupService; diff --git a/dspace-api/src/main/java/org/dspace/xmlworkflow/state/actions/userassignment/UserSelectionAction.java b/dspace-api/src/main/java/org/dspace/xmlworkflow/state/actions/userassignment/UserSelectionAction.java index b80496ab4a..bbeb7cd173 100644 --- a/dspace-api/src/main/java/org/dspace/xmlworkflow/state/actions/userassignment/UserSelectionAction.java +++ b/dspace-api/src/main/java/org/dspace/xmlworkflow/state/actions/userassignment/UserSelectionAction.java @@ -11,7 +11,7 @@ import java.io.IOException; import java.sql.SQLException; import javax.servlet.http.HttpServletRequest; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.core.Context; import org.dspace.xmlworkflow.RoleMembers; @@ -36,7 +36,7 @@ import org.springframework.beans.factory.annotation.Autowired; */ public abstract class UserSelectionAction extends Action { - protected Logger log = Logger.getLogger(UserSelectionAction.class); + protected Logger log = org.apache.logging.log4j.LogManager.getLogger(UserSelectionAction.class); public abstract boolean isFinished(XmlWorkflowItem wfi); diff --git a/dspace-api/src/main/java/org/dspace/xmlworkflow/storedcomponents/XmlWorkflowItemServiceImpl.java b/dspace-api/src/main/java/org/dspace/xmlworkflow/storedcomponents/XmlWorkflowItemServiceImpl.java index 975719e800..7641c95403 100644 --- a/dspace-api/src/main/java/org/dspace/xmlworkflow/storedcomponents/XmlWorkflowItemServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/xmlworkflow/storedcomponents/XmlWorkflowItemServiceImpl.java @@ -12,7 +12,7 @@ import java.sql.SQLException; import java.util.Iterator; import java.util.List; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Collection; import org.dspace.content.Item; @@ -52,7 +52,7 @@ public class XmlWorkflowItemServiceImpl implements XmlWorkflowItemService { /* * The current step in the workflow system in which this workflow item is present */ - private Logger log = Logger.getLogger(XmlWorkflowItemServiceImpl.class); + private Logger log = org.apache.logging.log4j.LogManager.getLogger(XmlWorkflowItemServiceImpl.class); protected XmlWorkflowItemServiceImpl() { diff --git a/dspace-api/src/main/resources/org/dspace/statistics/elasticsearch-statistics-mapping.json b/dspace-api/src/main/resources/org/dspace/statistics/elasticsearch-statistics-mapping.json deleted file mode 100644 index e873b976ec..0000000000 --- a/dspace-api/src/main/resources/org/dspace/statistics/elasticsearch-statistics-mapping.json +++ /dev/null @@ -1,163 +0,0 @@ -{ - "stats": { - "properties": { - "bundleName": { - "type": "string", - "index": "not_analyzed", - "norms": { - "enabled": false - }, - "index_options": "docs" - }, - "city": { - "type": "multi_field", - "fields": { - "city": { - "type": "string" - }, - "untouched": { - "type": "string", - "index": "not_analyzed", - "norms": { - "enabled": false - }, - "index_options": "docs", - "include_in_all": false - } - } - }, - "continent": { - "type": "string", - "index": "not_analyzed", - "norms": { - "enabled": false - }, - "index_options": "docs" - }, - "country": { - "type": "multi_field", - "fields": { - "country": { - "type": "string" - }, - "untouched": { - "type": "string", - "index": "not_analyzed", - "norms": { - "enabled": false - }, - "index_options": "docs", - "include_in_all": false - } - } - }, - "countryCode": { - "type": "string", - "index": "not_analyzed", - "norms": { - "enabled": false - }, - "index_options": "docs" - }, - "dns": { - "type": "multi_field", - "fields": { - "dns": { - "type": "string" - }, - "untouched": { - "type": "string", - "index": "not_analyzed", - "norms": { - "enabled": false - }, - "index_options": "docs", - "include_in_all": false - } - } - }, - "epersonid": { - "type": "string", - "index": "not_analyzed", - "norms": { - "enabled": false - }, - "index_options": "docs" - }, - "geo": { - "type": "geo_point" - }, - "id": { - "type": "integer" - }, - "ip": { - "type": "multi_field", - "fields": { - "ip": { - "type": "string" - }, - "untouched": { - "type": "string", - "index": "not_analyzed", - "norms": { - "enabled": false - }, - "index_options": "docs", - "include_in_all": false - } - } - }, - "isBot": { - "type": "boolean" - }, - "latitude": { - "type": "double" - }, - "longitude": { - "type": "double" - }, - "message": { - "type": "string" - }, - "owningColl": { - "type": "integer" - }, - "owningComm": { - "type": "integer" - }, - "owningItem": { - "type": "string", - "index": "not_analyzed", - "norms": { - "enabled": false - }, - "index_options": "docs" - }, - "postDate": { - "type": "date", - "format": "dateOptionalTime" - }, - "time": { - "type": "date", - "format": "dateOptionalTime" - }, - "type": { - "type": "string", - "index": "not_analyzed", - "norms": { - "enabled": false - }, - "index_options": "docs" - }, - "typeIndex": { - "type": "long" - }, - "user": { - "type": "string" - }, - "userAgent": { - "type": "string" - } - } - } -} \ No newline at end of file diff --git a/dspace-api/src/main/resources/spring/spring-dspace-core-services.xml b/dspace-api/src/main/resources/spring/spring-dspace-core-services.xml index dfdd1a2c8c..402d5d8287 100644 --- a/dspace-api/src/main/resources/spring/spring-dspace-core-services.xml +++ b/dspace-api/src/main/resources/spring/spring-dspace-core-services.xml @@ -45,6 +45,4 @@ - - diff --git a/dspace-api/src/test/java/org/dspace/AbstractDSpaceTest.java b/dspace-api/src/test/java/org/dspace/AbstractDSpaceTest.java index f62db49e4c..7326b7188e 100644 --- a/dspace-api/src/test/java/org/dspace/AbstractDSpaceTest.java +++ b/dspace-api/src/test/java/org/dspace/AbstractDSpaceTest.java @@ -16,7 +16,7 @@ import java.util.Properties; import java.util.TimeZone; import mockit.integration.junit4.JMockit; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.app.util.MockUtil; import org.dspace.servicemanager.DSpaceKernelImpl; import org.dspace.servicemanager.DSpaceKernelInit; @@ -50,7 +50,7 @@ public class AbstractDSpaceTest { /** * log4j category */ - private static final Logger log = Logger.getLogger(AbstractDSpaceTest.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(AbstractDSpaceTest.class); /** * Test properties. These configure our general test environment diff --git a/dspace-api/src/test/java/org/dspace/AbstractUnitTest.java b/dspace-api/src/test/java/org/dspace/AbstractUnitTest.java index c008b76d17..cf8a50fcf6 100644 --- a/dspace-api/src/test/java/org/dspace/AbstractUnitTest.java +++ b/dspace-api/src/test/java/org/dspace/AbstractUnitTest.java @@ -11,7 +11,7 @@ import static org.junit.Assert.fail; import java.sql.SQLException; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.authorize.factory.AuthorizeServiceFactory; import org.dspace.authorize.service.AuthorizeService; @@ -43,7 +43,7 @@ public class AbstractUnitTest extends AbstractDSpaceTest { /** * log4j category */ - private static final Logger log = Logger.getLogger(AbstractUnitTest.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(AbstractUnitTest.class); /** * Context mock object to use in the tests. diff --git a/dspace-api/src/test/java/org/dspace/app/bulkedit/DSpaceCSVTest.java b/dspace-api/src/test/java/org/dspace/app/bulkedit/DSpaceCSVTest.java index c4261f0b02..1ddba1a011 100644 --- a/dspace-api/src/test/java/org/dspace/app/bulkedit/DSpaceCSVTest.java +++ b/dspace-api/src/test/java/org/dspace/app/bulkedit/DSpaceCSVTest.java @@ -18,7 +18,7 @@ import java.io.OutputStreamWriter; import java.util.ArrayList; import java.util.List; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.AbstractUnitTest; import org.junit.Test; @@ -32,7 +32,7 @@ public class DSpaceCSVTest extends AbstractUnitTest { /** * log4j category */ - private static final Logger log = Logger.getLogger(DSpaceCSVTest.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(DSpaceCSVTest.class); /** * Test the reading and parsing of CSV files diff --git a/dspace-api/src/test/java/org/dspace/app/util/GoogleMetadataTest.java b/dspace-api/src/test/java/org/dspace/app/util/GoogleMetadataTest.java index a03b46ad57..3a64c5482c 100644 --- a/dspace-api/src/test/java/org/dspace/app/util/GoogleMetadataTest.java +++ b/dspace-api/src/test/java/org/dspace/app/util/GoogleMetadataTest.java @@ -15,7 +15,7 @@ import java.io.IOException; import java.sql.SQLException; import org.apache.commons.io.Charsets; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.AbstractUnitTest; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Bitstream; @@ -37,7 +37,7 @@ public class GoogleMetadataTest extends AbstractUnitTest { /** * log4j category */ - private static final Logger log = Logger.getLogger(GoogleMetadataTest.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(GoogleMetadataTest.class); /** * Item instance for the tests diff --git a/dspace-api/src/test/java/org/dspace/content/BitstreamFormatTest.java b/dspace-api/src/test/java/org/dspace/content/BitstreamFormatTest.java index 07b83c3755..c12234635c 100644 --- a/dspace-api/src/test/java/org/dspace/content/BitstreamFormatTest.java +++ b/dspace-api/src/test/java/org/dspace/content/BitstreamFormatTest.java @@ -22,7 +22,7 @@ import java.util.Collections; import java.util.List; import mockit.NonStrictExpectations; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.AbstractUnitTest; import org.dspace.authorize.AuthorizeException; import org.dspace.authorize.AuthorizeServiceImpl; @@ -45,7 +45,7 @@ public class BitstreamFormatTest extends AbstractUnitTest { /** * log4j category */ - private final static Logger log = Logger.getLogger(BitstreamFormatTest.class); + private final static Logger log = org.apache.logging.log4j.LogManager.getLogger(BitstreamFormatTest.class); /** * Object to use in the tests diff --git a/dspace-api/src/test/java/org/dspace/content/BitstreamTest.java b/dspace-api/src/test/java/org/dspace/content/BitstreamTest.java index fd46c3ec17..b390de4598 100644 --- a/dspace-api/src/test/java/org/dspace/content/BitstreamTest.java +++ b/dspace-api/src/test/java/org/dspace/content/BitstreamTest.java @@ -24,7 +24,7 @@ import java.util.List; import java.util.UUID; import mockit.NonStrictExpectations; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.BitstreamFormatService; @@ -43,7 +43,7 @@ public class BitstreamTest extends AbstractDSpaceObjectTest { /** * log4j category */ - private static final Logger log = Logger.getLogger(BitstreamTest.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(BitstreamTest.class); protected BitstreamFormatService bitstreamFormatService = ContentServiceFactory.getInstance() diff --git a/dspace-api/src/test/java/org/dspace/content/BundleTest.java b/dspace-api/src/test/java/org/dspace/content/BundleTest.java index 09ca44ada1..abd9ce6947 100644 --- a/dspace-api/src/test/java/org/dspace/content/BundleTest.java +++ b/dspace-api/src/test/java/org/dspace/content/BundleTest.java @@ -29,7 +29,7 @@ import java.util.UUID; import mockit.NonStrictExpectations; import org.apache.commons.collections4.CollectionUtils; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.authorize.ResourcePolicy; import org.dspace.core.Constants; @@ -47,7 +47,7 @@ public class BundleTest extends AbstractDSpaceObjectTest { /** * log4j category */ - private static final Logger log = Logger.getLogger(BundleTest.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(BundleTest.class); /** * Bundle instance for the tests diff --git a/dspace-api/src/test/java/org/dspace/content/CollectionTest.java b/dspace-api/src/test/java/org/dspace/content/CollectionTest.java index 1e05353dcf..36f92a1cb7 100644 --- a/dspace-api/src/test/java/org/dspace/content/CollectionTest.java +++ b/dspace-api/src/test/java/org/dspace/content/CollectionTest.java @@ -25,7 +25,7 @@ import java.util.List; import java.util.UUID; import mockit.NonStrictExpectations; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.app.util.AuthorizeUtil; import org.dspace.authorize.AuthorizeException; import org.dspace.core.Constants; @@ -48,7 +48,7 @@ public class CollectionTest extends AbstractDSpaceObjectTest { /** * log4j category */ - private static final Logger log = Logger.getLogger(CollectionTest.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(CollectionTest.class); private LicenseService licenseService = CoreServiceFactory.getInstance().getLicenseService(); @@ -1834,16 +1834,16 @@ public class CollectionTest extends AbstractDSpaceObjectTest { public void testGetCommunities() throws Exception { context.turnOffAuthorisationSystem(); Community community = communityService.create(null, context); - communityService.setMetadataSingleValue(context, community, MetadataSchema.DC_SCHEMA, "title", null, Item.ANY, - "community 3"); + communityService.setMetadataSingleValue(context, community, MetadataSchemaEnum.DC.getName(), + "title", null, Item.ANY, "community 3"); this.collection.addCommunity(community); community = communityService.create(null, context); - communityService.setMetadataSingleValue(context, community, MetadataSchema.DC_SCHEMA, "title", null, Item.ANY, - "community 1"); + communityService.setMetadataSingleValue(context, community, MetadataSchemaEnum.DC.getName(), + "title", null, Item.ANY, "community 1"); this.collection.addCommunity(community); community = communityService.create(null, context); - communityService.setMetadataSingleValue(context, community, MetadataSchema.DC_SCHEMA, "title", null, Item.ANY, - "community 2"); + communityService.setMetadataSingleValue(context, community, MetadataSchemaEnum.DC.getName(), + "title", null, Item.ANY, "community 2"); this.collection.addCommunity(community); context.restoreAuthSystemState(); assertTrue("testGetCommunities 0", collection.getCommunities().size() == 4); diff --git a/dspace-api/src/test/java/org/dspace/content/CommunityTest.java b/dspace-api/src/test/java/org/dspace/content/CommunityTest.java index 65bf7f6f73..b1b9f99623 100644 --- a/dspace-api/src/test/java/org/dspace/content/CommunityTest.java +++ b/dspace-api/src/test/java/org/dspace/content/CommunityTest.java @@ -25,7 +25,7 @@ import java.util.List; import java.util.UUID; import mockit.NonStrictExpectations; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.app.util.AuthorizeUtil; import org.dspace.authorize.AuthorizeException; import org.dspace.core.Constants; @@ -45,7 +45,7 @@ public class CommunityTest extends AbstractDSpaceObjectTest { /** * log4j category */ - private static final Logger log = Logger.getLogger(CommunityTest.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(CommunityTest.class); /** * Community instance for the tests @@ -673,14 +673,17 @@ public class CommunityTest extends AbstractDSpaceObjectTest { context.turnOffAuthorisationSystem(); Collection collection = collectionService.create(context, c); - collectionService.setMetadataSingleValue(context, collection, MetadataSchema.DC_SCHEMA, "title", null, Item.ANY, - "collection B"); + collectionService + .setMetadataSingleValue(context, collection, MetadataSchemaEnum.DC.getName(), + "title", null, Item.ANY, "collection B"); collection = collectionService.create(context, c); - collectionService.setMetadataSingleValue(context, collection, MetadataSchema.DC_SCHEMA, "title", null, Item.ANY, - "collection C"); + collectionService + .setMetadataSingleValue(context, collection, MetadataSchemaEnum.DC.getName(), + "title", null, Item.ANY, "collection C"); collection = collectionService.create(context, c); - collectionService.setMetadataSingleValue(context, collection, MetadataSchema.DC_SCHEMA, "title", null, Item.ANY, - "collection A"); + collectionService + .setMetadataSingleValue(context, collection, MetadataSchemaEnum.DC.getName(), + "title", null, Item.ANY, "collection A"); //we need to commit the changes so we don't block the table for testing context.restoreAuthSystemState(); @@ -712,14 +715,17 @@ public class CommunityTest extends AbstractDSpaceObjectTest { context.turnOffAuthorisationSystem(); Community community = communityService.create(c, context); - communityService.setMetadataSingleValue(context, community, MetadataSchema.DC_SCHEMA, "title", null, Item.ANY, - "subcommunity B"); + communityService + .setMetadataSingleValue(context, community, MetadataSchemaEnum.DC.getName(), + "title", null, Item.ANY, "subcommunity B"); community = communityService.create(c, context); - communityService.setMetadataSingleValue(context, community, MetadataSchema.DC_SCHEMA, "title", null, Item.ANY, - "subcommunity A"); + communityService + .setMetadataSingleValue(context, community, MetadataSchemaEnum.DC.getName(), + "title", null, Item.ANY, "subcommunity A"); community = communityService.create(c, context); - communityService.setMetadataSingleValue(context, community, MetadataSchema.DC_SCHEMA, "title", null, Item.ANY, - "subcommunity C"); + communityService + .setMetadataSingleValue(context, community, MetadataSchemaEnum.DC.getName(), + "title", null, Item.ANY, "subcommunity C"); //we need to commit the changes so we don't block the table for testing context.restoreAuthSystemState(); diff --git a/dspace-api/src/test/java/org/dspace/content/DCDateTest.java b/dspace-api/src/test/java/org/dspace/content/DCDateTest.java index ced07c72b2..e827fb4434 100644 --- a/dspace-api/src/test/java/org/dspace/content/DCDateTest.java +++ b/dspace-api/src/test/java/org/dspace/content/DCDateTest.java @@ -18,8 +18,8 @@ import java.util.GregorianCalendar; import java.util.Locale; import java.util.TimeZone; -import org.apache.commons.lang.time.DateUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.time.DateUtils; +import org.apache.logging.log4j.Logger; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -31,7 +31,7 @@ public class DCDateTest { /** * log4j category */ - private static Logger log = Logger.getLogger(DCDateTest.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(DCDateTest.class); /** * Object to use in the tests diff --git a/dspace-api/src/test/java/org/dspace/content/FormatIdentifierTest.java b/dspace-api/src/test/java/org/dspace/content/FormatIdentifierTest.java index eb2b79c9dd..4e0711aac0 100644 --- a/dspace-api/src/test/java/org/dspace/content/FormatIdentifierTest.java +++ b/dspace-api/src/test/java/org/dspace/content/FormatIdentifierTest.java @@ -14,7 +14,7 @@ import static org.junit.Assert.assertThat; import java.io.File; import java.io.FileInputStream; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.AbstractUnitTest; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.BitstreamFormatService; @@ -33,7 +33,7 @@ public class FormatIdentifierTest extends AbstractUnitTest { /** * log4j category */ - private static final Logger log = Logger.getLogger(FormatIdentifierTest.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(FormatIdentifierTest.class); protected BitstreamService bitstreamService = ContentServiceFactory.getInstance().getBitstreamService(); protected BitstreamFormatService bitstreamFormatService = ContentServiceFactory.getInstance() diff --git a/dspace-api/src/test/java/org/dspace/content/ITCommunityCollection.java b/dspace-api/src/test/java/org/dspace/content/ITCommunityCollection.java index 2d7271896d..e7f9c29794 100644 --- a/dspace-api/src/test/java/org/dspace/content/ITCommunityCollection.java +++ b/dspace-api/src/test/java/org/dspace/content/ITCommunityCollection.java @@ -19,7 +19,7 @@ import java.io.IOException; import java.sql.SQLException; import java.util.UUID; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.AbstractIntegrationTest; import org.dspace.authorize.AuthorizeException; import org.dspace.content.factory.ContentServiceFactory; @@ -51,7 +51,7 @@ public class ITCommunityCollection extends AbstractIntegrationTest { /** * log4j category */ - private static final Logger log = Logger.getLogger(ITCommunityCollection.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(ITCommunityCollection.class); protected CommunityService communityService = ContentServiceFactory.getInstance().getCommunityService(); protected CollectionService collectionService = ContentServiceFactory.getInstance().getCollectionService(); diff --git a/dspace-api/src/test/java/org/dspace/content/ITMetadata.java b/dspace-api/src/test/java/org/dspace/content/ITMetadata.java index e8bc5e5414..10afd4d85f 100644 --- a/dspace-api/src/test/java/org/dspace/content/ITMetadata.java +++ b/dspace-api/src/test/java/org/dspace/content/ITMetadata.java @@ -16,7 +16,7 @@ import java.io.IOException; import java.sql.SQLException; import java.util.List; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.AbstractIntegrationTest; import org.dspace.authorize.AuthorizeException; import org.dspace.content.factory.ContentServiceFactory; @@ -40,7 +40,7 @@ public class ITMetadata extends AbstractIntegrationTest { /** * log4j category */ - private static final Logger log = Logger.getLogger(ITMetadata.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(ITMetadata.class); protected CommunityService communityService = ContentServiceFactory.getInstance().getCommunityService(); diff --git a/dspace-api/src/test/java/org/dspace/content/InProgressSubmissionTest.java b/dspace-api/src/test/java/org/dspace/content/InProgressSubmissionTest.java index 28f56a790a..78be99bb01 100644 --- a/dspace-api/src/test/java/org/dspace/content/InProgressSubmissionTest.java +++ b/dspace-api/src/test/java/org/dspace/content/InProgressSubmissionTest.java @@ -7,7 +7,7 @@ */ package org.dspace.content; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.AbstractUnitTest; import org.junit.After; import org.junit.Before; @@ -26,7 +26,7 @@ public class InProgressSubmissionTest extends AbstractUnitTest { /** * log4j category */ - private static final Logger log = Logger.getLogger(InProgressSubmissionTest.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(InProgressSubmissionTest.class); /** * This method will be run before every test as per @Before. It will diff --git a/dspace-api/src/test/java/org/dspace/content/InstallItemTest.java b/dspace-api/src/test/java/org/dspace/content/InstallItemTest.java index 72a7f626b8..129727bd14 100644 --- a/dspace-api/src/test/java/org/dspace/content/InstallItemTest.java +++ b/dspace-api/src/test/java/org/dspace/content/InstallItemTest.java @@ -22,7 +22,7 @@ import java.util.List; import java.util.TimeZone; import mockit.NonStrictExpectations; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.AbstractUnitTest; import org.dspace.authorize.AuthorizeException; import org.dspace.content.factory.ContentServiceFactory; @@ -60,7 +60,7 @@ public class InstallItemTest extends AbstractUnitTest { /** * log4j category */ - private static final Logger log = Logger.getLogger(InstallItemTest.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(InstallItemTest.class); /** * Used to check/verify thrown exceptions in below tests diff --git a/dspace-api/src/test/java/org/dspace/content/ItemComparatorTest.java b/dspace-api/src/test/java/org/dspace/content/ItemComparatorTest.java index 71fdcb41e8..73c8bc0eb5 100644 --- a/dspace-api/src/test/java/org/dspace/content/ItemComparatorTest.java +++ b/dspace-api/src/test/java/org/dspace/content/ItemComparatorTest.java @@ -14,7 +14,7 @@ import static org.junit.Assert.fail; import java.io.IOException; import java.sql.SQLException; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.AbstractUnitTest; import org.dspace.authorize.AuthorizeException; import org.dspace.content.factory.ContentServiceFactory; @@ -40,7 +40,7 @@ public class ItemComparatorTest extends AbstractUnitTest { /** * log4j category */ - private static final Logger log = Logger.getLogger(ItemComparatorTest.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(ItemComparatorTest.class); protected CommunityService communityService = ContentServiceFactory.getInstance().getCommunityService(); protected CollectionService collectionService = ContentServiceFactory.getInstance().getCollectionService(); diff --git a/dspace-api/src/test/java/org/dspace/content/ItemTest.java b/dspace-api/src/test/java/org/dspace/content/ItemTest.java index 32e6e5deb5..63b012b00e 100644 --- a/dspace-api/src/test/java/org/dspace/content/ItemTest.java +++ b/dspace-api/src/test/java/org/dspace/content/ItemTest.java @@ -29,8 +29,8 @@ import java.util.List; import java.util.UUID; import mockit.NonStrictExpectations; -import org.apache.commons.lang.time.DateUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.time.DateUtils; +import org.apache.logging.log4j.Logger; import org.dspace.app.util.AuthorizeUtil; import org.dspace.authorize.AuthorizeException; import org.dspace.authorize.ResourcePolicy; @@ -56,7 +56,7 @@ public class ItemTest extends AbstractDSpaceObjectTest { /** * log4j category */ - private static final Logger log = Logger.getLogger(ItemTest.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(ItemTest.class); /** * Item instance for the tests @@ -737,12 +737,12 @@ public class ItemTest extends AbstractDSpaceObjectTest { public void testGetCollections() throws Exception { context.turnOffAuthorisationSystem(); Collection collection = collectionService.create(context, owningCommunity); - collectionService.setMetadataSingleValue(context, collection, MetadataSchema.DC_SCHEMA, "title", null, Item.ANY, - "collection B"); + collectionService.setMetadataSingleValue(context, collection, MetadataSchemaEnum.DC.getName(), + "title", null, Item.ANY, "collection B"); it.addCollection(collection); collection = collectionService.create(context, owningCommunity); - collectionService.setMetadataSingleValue(context, collection, MetadataSchema.DC_SCHEMA, "title", null, Item.ANY, - "collection A"); + collectionService.setMetadataSingleValue(context, collection, MetadataSchemaEnum.DC.getName(), + "title", null, Item.ANY, "collection A"); it.addCollection(collection); context.restoreAuthSystemState(); assertThat("testGetCollections 0", it.getCollections(), notNullValue()); diff --git a/dspace-api/src/test/java/org/dspace/content/LicenseUtilsTest.java b/dspace-api/src/test/java/org/dspace/content/LicenseUtilsTest.java index c1dee50994..ab96d0cde3 100644 --- a/dspace-api/src/test/java/org/dspace/content/LicenseUtilsTest.java +++ b/dspace-api/src/test/java/org/dspace/content/LicenseUtilsTest.java @@ -20,7 +20,7 @@ import java.util.Locale; import java.util.Map; import org.apache.commons.io.IOUtils; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.AbstractUnitTest; import org.dspace.authorize.AuthorizeException; import org.dspace.content.factory.ContentServiceFactory; @@ -49,7 +49,7 @@ public class LicenseUtilsTest extends AbstractUnitTest { /** * log4j category */ - private static final Logger log = Logger.getLogger(LicenseUtilsTest.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(LicenseUtilsTest.class); protected CommunityService communityService = ContentServiceFactory.getInstance().getCommunityService(); protected CollectionService collectionService = ContentServiceFactory.getInstance().getCollectionService(); diff --git a/dspace-api/src/test/java/org/dspace/content/MetadataFieldTest.java b/dspace-api/src/test/java/org/dspace/content/MetadataFieldTest.java index b41e8acd97..edd030a135 100644 --- a/dspace-api/src/test/java/org/dspace/content/MetadataFieldTest.java +++ b/dspace-api/src/test/java/org/dspace/content/MetadataFieldTest.java @@ -18,7 +18,7 @@ import java.sql.SQLException; import java.util.List; import mockit.NonStrictExpectations; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.AbstractUnitTest; import org.dspace.authorize.AuthorizeException; import org.dspace.content.factory.ContentServiceFactory; @@ -38,7 +38,7 @@ public class MetadataFieldTest extends AbstractUnitTest { /** * log4j category */ - private static final Logger log = Logger.getLogger(MetadataFieldTest.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(MetadataFieldTest.class); /** * MetadataField instance for the tests @@ -78,14 +78,14 @@ public class MetadataFieldTest extends AbstractUnitTest { public void init() { super.init(); try { - this.dcSchema = metadataSchemaService.find(context, MetadataSchema.DC_SCHEMA); + this.dcSchema = metadataSchemaService.find(context, MetadataSchemaEnum.DC.getName()); this.mf = metadataFieldService.findByElement(context, - MetadataSchema.DC_SCHEMA, element, qualifier); + MetadataSchemaEnum.DC.getName(), element, qualifier); if (mf == null) { context.turnOffAuthorisationSystem(); this.mf = metadataFieldService - .create(context, metadataSchemaService.find(context, MetadataSchema.DC_SCHEMA), element, qualifier, - scopeNote); + .create(context, metadataSchemaService.find(context, MetadataSchemaEnum.DC.getName()), + element, qualifier, scopeNote); context.restoreAuthSystemState(); } @@ -165,7 +165,7 @@ public class MetadataFieldTest extends AbstractUnitTest { */ @Test public void testGetSchema() { - assertThat("testGetSchemaID 0", mf.getMetadataSchema().getName(), equalTo(MetadataSchema.DC_SCHEMA)); + assertThat("testGetSchemaID 0", mf.getMetadataSchema().getName(), equalTo(MetadataSchemaEnum.DC.getName())); } /** @@ -259,7 +259,8 @@ public class MetadataFieldTest extends AbstractUnitTest { */ @Test public void testFindByElement() throws Exception { - MetadataField found = metadataFieldService.findByElement(context, MetadataSchema.DC_SCHEMA, element, qualifier); + MetadataField found = metadataFieldService.findByElement(context, MetadataSchemaEnum.DC.getName(), + element, qualifier); assertThat("testFindByElement 0", found, notNullValue()); assertThat("testFindByElement 1", found.getID(), equalTo(mf.getID())); assertThat("testFindByElement 2", found.getElement(), equalTo(mf.getElement())); @@ -290,7 +291,7 @@ public class MetadataFieldTest extends AbstractUnitTest { @Test public void testFindAllInSchema() throws Exception { List found = metadataFieldService - .findAllInSchema(context, metadataSchemaService.find(context, MetadataSchema.DC_SCHEMA)); + .findAllInSchema(context, metadataSchemaService.find(context, MetadataSchemaEnum.DC.getName())); assertThat("testFindAllInSchema 0", found, notNullValue()); assertTrue("testFindAllInSchema 1", found.size() >= 1); assertTrue("testFindAllInSchema 2", found.size() <= metadataFieldService.findAll(context).size()); @@ -320,7 +321,7 @@ public class MetadataFieldTest extends AbstractUnitTest { MetadataField m = metadataFieldService.create(context, dcSchema, elem, qual, null); metadataFieldService.update(context, m); - MetadataField found = metadataFieldService.findByElement(context, MetadataSchema.DC_SCHEMA, elem, qual); + MetadataField found = metadataFieldService.findByElement(context, MetadataSchemaEnum.DC.getName(), elem, qual); assertThat("testUpdateAuth 0", found.getID(), equalTo(m.getID())); } @@ -380,7 +381,7 @@ public class MetadataFieldTest extends AbstractUnitTest { metadataFieldService.delete(context, m); - MetadataField found = metadataFieldService.findByElement(context, MetadataSchema.DC_SCHEMA, elem, qual); + MetadataField found = metadataFieldService.findByElement(context, MetadataSchemaEnum.DC.getName(), elem, qual); assertThat("testDeleteAuth 0", found, nullValue()); } diff --git a/dspace-api/src/test/java/org/dspace/content/MetadataSchemaTest.java b/dspace-api/src/test/java/org/dspace/content/MetadataSchemaTest.java index 35a82a9cec..30a1a07325 100644 --- a/dspace-api/src/test/java/org/dspace/content/MetadataSchemaTest.java +++ b/dspace-api/src/test/java/org/dspace/content/MetadataSchemaTest.java @@ -19,7 +19,7 @@ import java.sql.SQLException; import java.util.List; import mockit.NonStrictExpectations; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.AbstractUnitTest; import org.dspace.authorize.AuthorizeException; import org.dspace.content.factory.ContentServiceFactory; @@ -37,7 +37,7 @@ public class MetadataSchemaTest extends AbstractUnitTest { /** * log4j category */ - private static final Logger log = Logger.getLogger(MetadataSchemaTest.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(MetadataSchemaTest.class); /** * MetadataSchema instance for the tests @@ -59,7 +59,7 @@ public class MetadataSchemaTest extends AbstractUnitTest { public void init() { super.init(); try { - this.ms = metadataSchemaService.find(context, MetadataSchema.DC_SCHEMA); + this.ms = metadataSchemaService.find(context, MetadataSchemaEnum.DC.getName()); } catch (SQLException ex) { log.error("SQL Error in init", ex); fail("SQL Error in init: " + ex.getMessage()); @@ -122,7 +122,7 @@ public class MetadataSchemaTest extends AbstractUnitTest { @Test public void testGetSchemaID() throws SQLException { assertThat("testGetSchemaID 0", ms.getID(), - equalTo(metadataSchemaService.find(context, MetadataSchema.DC_SCHEMA).getID())); + equalTo(metadataSchemaService.find(context, MetadataSchemaEnum.DC.getName()).getID())); } /** diff --git a/dspace-api/src/test/java/org/dspace/content/MetadataValueTest.java b/dspace-api/src/test/java/org/dspace/content/MetadataValueTest.java index bee228aa05..808aab46ec 100644 --- a/dspace-api/src/test/java/org/dspace/content/MetadataValueTest.java +++ b/dspace-api/src/test/java/org/dspace/content/MetadataValueTest.java @@ -18,7 +18,7 @@ import java.io.IOException; import java.sql.SQLException; import java.util.List; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.AbstractUnitTest; import org.dspace.authorize.AuthorizeException; import org.dspace.content.factory.ContentServiceFactory; @@ -42,7 +42,7 @@ public class MetadataValueTest extends AbstractUnitTest { /** * log4j category */ - private static final Logger log = Logger.getLogger(MetadataValueTest.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(MetadataValueTest.class); /** * MetadataValue instance for the tests @@ -95,7 +95,7 @@ public class MetadataValueTest extends AbstractUnitTest { this.it = installItemService.installItem(context, workspaceItem); this.mf = metadataFieldService.findByElement(context, - MetadataSchema.DC_SCHEMA, element, qualifier); + MetadataSchemaEnum.DC.getName(), element, qualifier); this.mv = metadataValueService.create(context, it, mf); context.restoreAuthSystemState(); } catch (AuthorizeException ex) { diff --git a/dspace-api/src/test/java/org/dspace/content/NonUniqueMetadataExceptionTest.java b/dspace-api/src/test/java/org/dspace/content/NonUniqueMetadataExceptionTest.java index 52a8e0fe17..b99e44c7f2 100644 --- a/dspace-api/src/test/java/org/dspace/content/NonUniqueMetadataExceptionTest.java +++ b/dspace-api/src/test/java/org/dspace/content/NonUniqueMetadataExceptionTest.java @@ -9,7 +9,8 @@ package org.dspace.content; import static org.junit.Assert.assertTrue; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.junit.Test; /** @@ -23,7 +24,8 @@ public class NonUniqueMetadataExceptionTest { /** * log4j category */ - private static final Logger log = Logger.getLogger(NonUniqueMetadataExceptionTest.class); + private static final Logger log = LogManager + .getLogger(NonUniqueMetadataExceptionTest.class); /** * Dummy test to avoid initialization errors diff --git a/dspace-api/src/test/java/org/dspace/content/SiteTest.java b/dspace-api/src/test/java/org/dspace/content/SiteTest.java index f0d0e4243c..421ce4b1bc 100644 --- a/dspace-api/src/test/java/org/dspace/content/SiteTest.java +++ b/dspace-api/src/test/java/org/dspace/content/SiteTest.java @@ -15,7 +15,7 @@ import static org.junit.Assert.fail; import java.sql.SQLException; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.AbstractUnitTest; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.SiteService; @@ -35,7 +35,7 @@ public class SiteTest extends AbstractUnitTest { /** * log4j category */ - private static final Logger log = Logger.getLogger(SiteTest.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(SiteTest.class); /** * Site instance for the tests diff --git a/dspace-api/src/test/java/org/dspace/content/SupervisedItemTest.java b/dspace-api/src/test/java/org/dspace/content/SupervisedItemTest.java index f0c289442b..406b8ab1b3 100644 --- a/dspace-api/src/test/java/org/dspace/content/SupervisedItemTest.java +++ b/dspace-api/src/test/java/org/dspace/content/SupervisedItemTest.java @@ -18,7 +18,7 @@ import java.sql.SQLException; import java.util.List; import java.util.UUID; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.AbstractUnitTest; import org.dspace.authorize.AuthorizeException; import org.dspace.content.factory.ContentServiceFactory; @@ -45,7 +45,7 @@ public class SupervisedItemTest extends AbstractUnitTest { /** * log4j category */ - private static final Logger log = Logger.getLogger(SupervisedItemTest.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(SupervisedItemTest.class); protected CommunityService communityService = ContentServiceFactory.getInstance().getCommunityService(); protected CollectionService collectionService = ContentServiceFactory.getInstance().getCollectionService(); diff --git a/dspace-api/src/test/java/org/dspace/content/ThumbnailTest.java b/dspace-api/src/test/java/org/dspace/content/ThumbnailTest.java index a350d3d0b8..93e231da1d 100644 --- a/dspace-api/src/test/java/org/dspace/content/ThumbnailTest.java +++ b/dspace-api/src/test/java/org/dspace/content/ThumbnailTest.java @@ -15,7 +15,7 @@ import java.io.FileInputStream; import java.io.IOException; import java.sql.SQLException; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.AbstractUnitTest; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.BitstreamService; @@ -34,7 +34,7 @@ public class ThumbnailTest extends AbstractUnitTest { /** * log4j category */ - private static final Logger log = Logger.getLogger(ThumbnailTest.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(ThumbnailTest.class); protected BitstreamService bitstreamService = ContentServiceFactory.getInstance().getBitstreamService(); diff --git a/dspace-api/src/test/java/org/dspace/content/VersioningTest.java b/dspace-api/src/test/java/org/dspace/content/VersioningTest.java index 00ad114097..f66619f615 100644 --- a/dspace-api/src/test/java/org/dspace/content/VersioningTest.java +++ b/dspace-api/src/test/java/org/dspace/content/VersioningTest.java @@ -16,7 +16,7 @@ import static org.junit.Assert.fail; import java.sql.SQLException; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.AbstractUnitTest; import org.dspace.authorize.AuthorizeException; import org.dspace.content.factory.ContentServiceFactory; @@ -47,7 +47,7 @@ import org.junit.Test; */ public class VersioningTest extends AbstractUnitTest { - private static final Logger log = Logger.getLogger(VersioningTest.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(VersioningTest.class); private String originalHandle; private Item originalItem; diff --git a/dspace-api/src/test/java/org/dspace/content/WorkspaceItemTest.java b/dspace-api/src/test/java/org/dspace/content/WorkspaceItemTest.java index 02a2953498..250ff35090 100644 --- a/dspace-api/src/test/java/org/dspace/content/WorkspaceItemTest.java +++ b/dspace-api/src/test/java/org/dspace/content/WorkspaceItemTest.java @@ -21,7 +21,7 @@ import java.util.List; import java.util.UUID; import mockit.NonStrictExpectations; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.AbstractUnitTest; import org.dspace.authorize.AuthorizeException; import org.dspace.content.factory.ContentServiceFactory; @@ -48,7 +48,7 @@ public class WorkspaceItemTest extends AbstractUnitTest { /** * log4j category */ - private static final Logger log = Logger.getLogger(WorkspaceItemTest.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(WorkspaceItemTest.class); /** * WorkspaceItem instance for the tests diff --git a/dspace-api/src/test/java/org/dspace/content/packager/ITDSpaceAIP.java b/dspace-api/src/test/java/org/dspace/content/packager/ITDSpaceAIP.java index 9ea23718b7..f2c8c8ac1b 100644 --- a/dspace-api/src/test/java/org/dspace/content/packager/ITDSpaceAIP.java +++ b/dspace-api/src/test/java/org/dspace/content/packager/ITDSpaceAIP.java @@ -23,7 +23,7 @@ import java.util.Iterator; import java.util.List; import mockit.NonStrictExpectations; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.AbstractUnitTest; import org.dspace.authorize.AuthorizeException; import org.dspace.authorize.ResourcePolicy; @@ -36,7 +36,7 @@ import org.dspace.content.Collection; import org.dspace.content.Community; import org.dspace.content.DSpaceObject; import org.dspace.content.Item; -import org.dspace.content.MetadataSchema; +import org.dspace.content.MetadataSchemaEnum; import org.dspace.content.WorkspaceItem; import org.dspace.content.crosswalk.CrosswalkException; import org.dspace.content.factory.ContentServiceFactory; @@ -80,7 +80,7 @@ public class ITDSpaceAIP extends AbstractUnitTest { /** * log4j category */ - private static final Logger log = Logger.getLogger(ITDSpaceAIP.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(ITDSpaceAIP.class); protected CommunityService communityService = ContentServiceFactory.getInstance().getCommunityService(); protected CollectionService collectionService = ContentServiceFactory.getInstance().getCollectionService(); @@ -164,17 +164,18 @@ public class ITDSpaceAIP extends AbstractUnitTest { // Community topCommunity = communityService.create(null, context); communityService - .addMetadata(context, topCommunity, MetadataSchema.DC_SCHEMA, "title", null, null, "Top Community"); + .addMetadata(context, topCommunity, MetadataSchemaEnum.DC.getName(), + "title", null, null, "Top Community"); communityService.update(context, topCommunity); topCommunityHandle = topCommunity.getHandle(); Community child = communityService.createSubcommunity(context, topCommunity); communityService - .addMetadata(context, child, MetadataSchema.DC_SCHEMA, "title", null, null, "Child Community"); + .addMetadata(context, child, MetadataSchemaEnum.DC.getName(), "title", null, null, "Child Community"); communityService.update(context, child); Community grandchild = communityService.createSubcommunity(context, child); - communityService.addMetadata(context, grandchild, MetadataSchema.DC_SCHEMA, "title", null, null, + communityService.addMetadata(context, grandchild, MetadataSchemaEnum.DC.getName(), "title", null, null, "Grandchild Community"); communityService.update(context, grandchild); @@ -558,8 +559,9 @@ public class ITDSpaceAIP extends AbstractUnitTest { // Change the Community name String newName = "This is NOT my Community name!"; - communityService.clearMetadata(context, topCommunity, MetadataSchema.DC_SCHEMA, "title", null, Item.ANY); - communityService.addMetadata(context, topCommunity, MetadataSchema.DC_SCHEMA, "title", null, null, newName); + communityService.clearMetadata(context, topCommunity, MetadataSchemaEnum.DC.getName(), "title", null, Item.ANY); + communityService.addMetadata(context, topCommunity, MetadataSchemaEnum.DC.getName(), + "title", null, null, newName); // Ensure name is changed assertEquals("testReplaceCommunityOnly() new name", topCommunity.getName(), newName); @@ -781,8 +783,10 @@ public class ITDSpaceAIP extends AbstractUnitTest { // Change the Collection name String newName = "This is NOT my Collection name!"; - collectionService.clearMetadata(context, testCollection, MetadataSchema.DC_SCHEMA, "title", null, Item.ANY); - collectionService.addMetadata(context, testCollection, MetadataSchema.DC_SCHEMA, "title", null, null, newName); + collectionService.clearMetadata(context, testCollection, MetadataSchemaEnum.DC.getName(), + "title", null, Item.ANY); + collectionService.addMetadata(context, testCollection, MetadataSchemaEnum.DC.getName(), + "title", null, null, newName); // Ensure name is changed assertEquals("testReplaceCollectionOnly() new name", testCollection.getName(), newName); @@ -1029,8 +1033,8 @@ public class ITDSpaceAIP extends AbstractUnitTest { // Change the Item name String newName = "This is NOT my Item name!"; - itemService.clearMetadata(context, testItem, MetadataSchema.DC_SCHEMA, "title", null, Item.ANY); - itemService.addMetadata(context, testItem, MetadataSchema.DC_SCHEMA, "title", null, null, newName); + itemService.clearMetadata(context, testItem, MetadataSchemaEnum.DC.getName(), "title", null, Item.ANY); + itemService.addMetadata(context, testItem, MetadataSchemaEnum.DC.getName(), "title", null, null, newName); // Ensure name is changed assertEquals("testReplaceItem() new name", testItem.getName(), newName); diff --git a/dspace-api/src/test/java/org/dspace/content/packager/PackageUtilsTest.java b/dspace-api/src/test/java/org/dspace/content/packager/PackageUtilsTest.java index a0b21f8221..68a3a7b671 100644 --- a/dspace-api/src/test/java/org/dspace/content/packager/PackageUtilsTest.java +++ b/dspace-api/src/test/java/org/dspace/content/packager/PackageUtilsTest.java @@ -15,12 +15,12 @@ import static org.junit.Assert.fail; import java.sql.SQLException; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.AbstractUnitTest; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Collection; import org.dspace.content.Community; -import org.dspace.content.MetadataSchema; +import org.dspace.content.MetadataSchemaEnum; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.CollectionService; import org.dspace.content.service.CommunityService; @@ -44,7 +44,7 @@ import org.junit.Test; * for the University of Waikato's Institutional Research Repositories */ public class PackageUtilsTest extends AbstractUnitTest { - private static final Logger log = Logger.getLogger(PackageUtilsTest.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(PackageUtilsTest.class); protected CommunityService communityService = ContentServiceFactory.getInstance().getCommunityService(); protected CollectionService collectionService = ContentServiceFactory.getInstance().getCollectionService(); @@ -87,13 +87,14 @@ public class PackageUtilsTest extends AbstractUnitTest { // Community topCommunity = communityService.create(null, context); communityService - .addMetadata(context, topCommunity, MetadataSchema.DC_SCHEMA, "title", null, null, "Top Community"); + .addMetadata(context, topCommunity, MetadataSchemaEnum.DC.getName(), "title", null, null, + "Top Community"); communityService.update(context, topCommunity); topCommunityHandle = topCommunity.getHandle(); Community child = communityService.createSubcommunity(context, topCommunity); communityService - .addMetadata(context, child, MetadataSchema.DC_SCHEMA, "title", null, null, "Child Community"); + .addMetadata(context, child, MetadataSchemaEnum.DC.getName(), "title", null, null, "Child Community"); communityService.update(context, child); // Create our primary Test Collection diff --git a/dspace-api/src/test/java/org/dspace/curate/CuratorTest.java b/dspace-api/src/test/java/org/dspace/curate/CuratorTest.java new file mode 100644 index 0000000000..5761ee7ec7 --- /dev/null +++ b/dspace-api/src/test/java/org/dspace/curate/CuratorTest.java @@ -0,0 +1,83 @@ +/** + * The contents of this file are subject to the license and copyright + * detailed in the LICENSE and NOTICE files at the root of the source + * tree and available online at + * + * http://www.dspace.org/license/ + */ +package org.dspace.curate; + +import static org.junit.Assert.assertEquals; + +import java.util.HashMap; +import java.util.Map; + +import org.dspace.AbstractUnitTest; +import org.dspace.content.DSpaceObject; +import org.dspace.content.factory.ContentServiceFactory; +import org.dspace.content.service.SiteService; +import org.dspace.services.ConfigurationService; +import org.junit.Test; + +/** + * + * @author mhwood + */ +public class CuratorTest + extends AbstractUnitTest { + private static final SiteService SITE_SERVICE = ContentServiceFactory.getInstance().getSiteService(); + + static final String RUN_PARAMETER_NAME = "runParameter"; + static final String RUN_PARAMETER_VALUE = "a parameter"; + static final String TASK_PROPERTY_NAME = "taskProperty"; + static final String TASK_PROPERTY_VALUE = "a property"; + + /** Value of a known runtime parameter, if any. */ + static String runParameter; + + /** Value of a known task property, if any. */ + static String taskProperty; + + /** + * Test of curate method, of class Curator. + * Currently this just tests task properties and run parameters. + * @throws java.lang.Exception passed through. + */ + @Test + public void testCurate_DSpaceObject() + throws Exception { + System.out.println("curate"); + + final String TASK_NAME = "dummyTask"; + + // Configure the task to be run. + ConfigurationService cfg = kernelImpl.getConfigurationService(); + cfg.setProperty("plugin.named.org.dspace.curate.CurationTask", + DummyTask.class.getName() + " = " + TASK_NAME); + cfg.setProperty(TASK_NAME + '.' + TASK_PROPERTY_NAME, TASK_PROPERTY_VALUE); + + // Get and configure a Curator. + Curator instance = new Curator(); + instance.setReporter("-"); // Send any report to standard out. FIXME when DS-3989 is merged + instance.addTask(TASK_NAME); + + // Configure the run. + Map parameters = new HashMap<>(); + parameters.put(RUN_PARAMETER_NAME, RUN_PARAMETER_VALUE); + instance.addParameters(parameters); + + // Curate the site. + DSpaceObject dso = SITE_SERVICE.findSite(context); + instance.curate(context, dso); + + // Check the result. + System.out.format("Task %s result was '%s'%n", + TASK_NAME, instance.getResult(TASK_NAME)); + System.out.format("Task %s status was %d%n", + TASK_NAME, instance.getStatus(TASK_NAME)); + assertEquals("Unexpected task status", + Curator.CURATE_SUCCESS, instance.getStatus(TASK_NAME)); + assertEquals("Wrong run parameter", RUN_PARAMETER_VALUE, runParameter); + assertEquals("Wrong task property", TASK_PROPERTY_VALUE, taskProperty); + } +} diff --git a/dspace-api/src/test/java/org/dspace/curate/DummyTask.java b/dspace-api/src/test/java/org/dspace/curate/DummyTask.java new file mode 100644 index 0000000000..22492a1e16 --- /dev/null +++ b/dspace-api/src/test/java/org/dspace/curate/DummyTask.java @@ -0,0 +1,30 @@ +/** + * The contents of this file are subject to the license and copyright + * detailed in the LICENSE and NOTICE files at the root of the source + * tree and available online at + * + * http://www.dspace.org/license/ + */ +package org.dspace.curate; + +import java.io.IOException; + +import org.dspace.content.DSpaceObject; + +/** + * Makes no model changes, but records certain property values for inspection. + */ +public class DummyTask + extends AbstractCurationTask { + public DummyTask() { + // This constructor intentionally left blank. + } + + @Override + public int perform(DSpaceObject dso) + throws IOException { + CuratorTest.runParameter = taskProperty(CuratorTest.RUN_PARAMETER_NAME); + CuratorTest.taskProperty = taskProperty(CuratorTest.TASK_PROPERTY_NAME); + return Curator.CURATE_SUCCESS; + } +} diff --git a/dspace-api/src/test/java/org/dspace/eperson/EPersonTest.java b/dspace-api/src/test/java/org/dspace/eperson/EPersonTest.java index 5e5e9c0fcc..8950bfa409 100644 --- a/dspace-api/src/test/java/org/dspace/eperson/EPersonTest.java +++ b/dspace-api/src/test/java/org/dspace/eperson/EPersonTest.java @@ -14,7 +14,7 @@ import static org.junit.Assert.fail; import java.sql.SQLException; import org.apache.commons.codec.DecoderException; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.AbstractUnitTest; import org.dspace.authorize.AuthorizeException; import org.dspace.core.Constants; @@ -28,7 +28,7 @@ import org.junit.Test; */ public class EPersonTest extends AbstractUnitTest { protected EPersonService ePersonService = EPersonServiceFactory.getInstance().getEPersonService(); - private static final Logger log = Logger.getLogger(EPersonTest.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(EPersonTest.class); public EPersonTest() { diff --git a/dspace-api/src/test/java/org/dspace/eperson/GroupTest.java b/dspace-api/src/test/java/org/dspace/eperson/GroupTest.java index 2dbd4c1428..d2cd08af72 100644 --- a/dspace-api/src/test/java/org/dspace/eperson/GroupTest.java +++ b/dspace-api/src/test/java/org/dspace/eperson/GroupTest.java @@ -21,7 +21,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.AbstractUnitTest; import org.dspace.authorize.AuthorizeException; import org.dspace.eperson.factory.EPersonServiceFactory; @@ -38,7 +38,7 @@ import org.junit.Test; */ public class GroupTest extends AbstractUnitTest { - private static final Logger log = Logger.getLogger(GroupTest.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(GroupTest.class); //TODO: test duplicate names ? diff --git a/dspace-api/src/test/java/org/dspace/handle/dao/impl/HandleDAOImplTest.java b/dspace-api/src/test/java/org/dspace/handle/dao/impl/HandleDAOImplTest.java index 8285e2552d..1560a5d04c 100644 --- a/dspace-api/src/test/java/org/dspace/handle/dao/impl/HandleDAOImplTest.java +++ b/dspace-api/src/test/java/org/dspace/handle/dao/impl/HandleDAOImplTest.java @@ -13,7 +13,7 @@ import static org.junit.Assert.fail; import java.io.IOException; import java.sql.SQLException; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.AbstractUnitTest; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Collection; @@ -46,7 +46,7 @@ public class HandleDAOImplTest extends AbstractUnitTest { /** * log4j category */ - private static final Logger log = Logger.getLogger(HandleDAOImplTest.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(HandleDAOImplTest.class); /** * Item instances for the tests diff --git a/dspace-api/src/test/java/org/dspace/identifier/DOIIdentifierProviderTest.java b/dspace-api/src/test/java/org/dspace/identifier/DOIIdentifierProviderTest.java index 51b0556401..c1c7b8ee7d 100644 --- a/dspace-api/src/test/java/org/dspace/identifier/DOIIdentifierProviderTest.java +++ b/dspace-api/src/test/java/org/dspace/identifier/DOIIdentifierProviderTest.java @@ -21,8 +21,8 @@ import java.util.Date; import java.util.List; import java.util.Random; -import org.apache.commons.lang.ObjectUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.ObjectUtils; +import org.apache.logging.log4j.Logger; import org.dspace.AbstractUnitTest; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Collection; @@ -58,7 +58,7 @@ public class DOIIdentifierProviderTest /** * log4j category */ - private static final Logger log = Logger.getLogger(DOIIdentifierProviderTest.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(DOIIdentifierProviderTest.class); private static final String PREFIX = "10.5072"; private static final String NAMESPACE_SEPARATOR = "dspaceUnitTests-"; diff --git a/dspace-api/src/test/java/org/dspace/identifier/EZIDIdentifierProviderTest.java b/dspace-api/src/test/java/org/dspace/identifier/EZIDIdentifierProviderTest.java index 496620e941..038611fe80 100644 --- a/dspace-api/src/test/java/org/dspace/identifier/EZIDIdentifierProviderTest.java +++ b/dspace-api/src/test/java/org/dspace/identifier/EZIDIdentifierProviderTest.java @@ -466,7 +466,7 @@ public class EZIDIdentifierProviderTest PrintWriter pw = new PrintWriter(sw); ex.printStackTrace(pw); System.out.println(sw.toString()); - org.apache.log4j.Logger.getLogger(EZIDIdentifierProviderTest.class).fatal("Caught NPE", ex); + org.apache.logging.log4j.LogManager.getLogger(EZIDIdentifierProviderTest.class).fatal("Caught NPE", ex); throw ex; } } diff --git a/dspace-api/src/test/java/org/dspace/service/impl/ClientInfoServiceImplTest.java b/dspace-api/src/test/java/org/dspace/service/impl/ClientInfoServiceImplTest.java new file mode 100644 index 0000000000..42c78944e1 --- /dev/null +++ b/dspace-api/src/test/java/org/dspace/service/impl/ClientInfoServiceImplTest.java @@ -0,0 +1,165 @@ +/** + * The contents of this file are subject to the license and copyright + * detailed in the LICENSE and NOTICE files at the root of the source + * tree and available online at + * + * http://www.dspace.org/license/ + */ +package org.dspace.service.impl; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import org.dspace.AbstractDSpaceTest; +import org.dspace.service.ClientInfoService; +import org.dspace.services.ConfigurationService; +import org.dspace.services.factory.DSpaceServicesFactory; +import org.dspace.statistics.util.DummyHttpServletRequest; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.runners.MockitoJUnitRunner; + +/** + * Unit test class for the {@link ClientInfoServiceImpl} class which implements + * the {@link ClientInfoService} interface + * + * @author tom dot desair at gmail dot com + */ +@RunWith(MockitoJUnitRunner.class) +public class ClientInfoServiceImplTest extends AbstractDSpaceTest { + + private ClientInfoService clientInfoService; + + private ConfigurationService configurationService; + + @Before + public void init() { + configurationService = DSpaceServicesFactory.getInstance().getConfigurationService(); + } + + @Test + public void getClientIpFromRequest() { + configurationService.setProperty("useProxies", true); + configurationService.setProperty("proxies.trusted.ipranges", "127.0.0"); + + clientInfoService = new ClientInfoServiceImpl(configurationService); + + DummyHttpServletRequest req = new DummyHttpServletRequest(); + req.setAddress("127.0.0.1"); + req.addHeader("X-Forwarded-For", "192.168.1.24"); + + assertEquals("192.168.1.24", clientInfoService.getClientIp(req)); + } + + @Test + public void getClientIpWithTrustedProxy() { + configurationService.setProperty("useProxies", true); + configurationService.setProperty("proxies.trusted.ipranges", "127.0.0"); + + clientInfoService = new ClientInfoServiceImpl(configurationService); + + String remoteIp = "127.0.0.1"; + String xForwardedFor = "192.168.1.24"; + + assertEquals("192.168.1.24", + clientInfoService.getClientIp(remoteIp, xForwardedFor)); + } + + + @Test + public void getClientIpWithUntrustedProxy() { + configurationService.setProperty("useProxies", true); + configurationService.setProperty("proxies.trusted.ipranges", "192.168.1.1"); + + clientInfoService = new ClientInfoServiceImpl(configurationService); + + String remoteIp = "10.24.64.14"; + String xForwardedFor = "192.168.1.24"; + + assertEquals("10.24.64.14", + clientInfoService.getClientIp(remoteIp, xForwardedFor)); + } + + @Test + public void getClientIpWithMultipleTrustedProxies() { + configurationService.setProperty("useProxies", true); + configurationService.setProperty("proxies.trusted.ipranges", "127.0.0,192.168.1"); + + clientInfoService = new ClientInfoServiceImpl(configurationService); + + String remoteIp = "127.0.0.1"; + String xForwardedFor = "10.24.64.14,192.168.1.24"; + + assertEquals("10.24.64.14", + clientInfoService.getClientIp(remoteIp, xForwardedFor)); + + xForwardedFor = "192.168.1.24,10.24.64.14"; + + assertEquals("10.24.64.14", + clientInfoService.getClientIp(remoteIp, xForwardedFor)); + } + + @Test + public void getClientIpWithoutTrustedProxies() { + configurationService.setProperty("useProxies", true); + configurationService.setProperty("proxies.trusted.ipranges", ""); + + clientInfoService = new ClientInfoServiceImpl(configurationService); + + String remoteIp = "127.0.0.1"; + String xForwardedFor = "10.24.64.14"; + + assertEquals("10.24.64.14", + clientInfoService.getClientIp(remoteIp, xForwardedFor)); + + xForwardedFor = "127.0.0.1,10.24.64.14"; + + assertEquals("10.24.64.14", + clientInfoService.getClientIp(remoteIp, xForwardedFor)); + + xForwardedFor = "10.24.64.14,127.0.0.1"; + + assertEquals("10.24.64.14", + clientInfoService.getClientIp(remoteIp, xForwardedFor)); + } + + @Test + public void getClientIpWithoutUseProxies() { + configurationService.setProperty("useProxies", false); + configurationService.setProperty("proxies.trusted.ipranges", ""); + + clientInfoService = new ClientInfoServiceImpl(configurationService); + + String remoteIp = "127.0.0.1"; + String xForwardedFor = "10.24.64.14"; + + assertEquals("127.0.0.1", + clientInfoService.getClientIp(remoteIp, xForwardedFor)); + + assertEquals("127.0.0.1", + clientInfoService.getClientIp(remoteIp, null)); + + assertEquals("127.0.0.1", + clientInfoService.getClientIp(remoteIp, "")); + } + + @Test + public void isUseProxiesEnabledTrue() { + configurationService.setProperty("useProxies", true); + + clientInfoService = new ClientInfoServiceImpl(configurationService); + + assertTrue(clientInfoService.isUseProxiesEnabled()); + } + + @Test + public void isUseProxiesEnabledFalse() { + configurationService.setProperty("useProxies", false); + + clientInfoService = new ClientInfoServiceImpl(configurationService); + + assertFalse(clientInfoService.isUseProxiesEnabled()); + } +} \ No newline at end of file diff --git a/dspace-api/src/test/java/org/dspace/statistics/MockSolrLoggerServiceImpl.java b/dspace-api/src/test/java/org/dspace/statistics/MockSolrLoggerServiceImpl.java index 9716fc8892..0c02c0a100 100644 --- a/dspace-api/src/test/java/org/dspace/statistics/MockSolrLoggerServiceImpl.java +++ b/dspace-api/src/test/java/org/dspace/statistics/MockSolrLoggerServiceImpl.java @@ -38,7 +38,6 @@ public class MockSolrLoggerServiceImpl File locationDb = new File(locationDbPath); locationDb.createNewFile(); locationService = new DatabaseReader.Builder(locationDb).build(); - useProxies = configurationService.getBooleanProperty("useProxies"); } } diff --git a/dspace-api/src/test/java/org/dspace/statistics/util/DummyHttpServletRequest.java b/dspace-api/src/test/java/org/dspace/statistics/util/DummyHttpServletRequest.java index 447e2c7728..b255db3e04 100644 --- a/dspace-api/src/test/java/org/dspace/statistics/util/DummyHttpServletRequest.java +++ b/dspace-api/src/test/java/org/dspace/statistics/util/DummyHttpServletRequest.java @@ -10,29 +10,47 @@ package org.dspace.statistics.util; import java.io.BufferedReader; import java.io.IOException; -import java.io.UnsupportedEncodingException; import java.security.Principal; +import java.util.Collection; +import java.util.Collections; import java.util.Enumeration; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; import java.util.Locale; import java.util.Map; +import javax.servlet.AsyncContext; +import javax.servlet.DispatcherType; import javax.servlet.RequestDispatcher; +import javax.servlet.ServletContext; +import javax.servlet.ServletException; import javax.servlet.ServletInputStream; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; +import javax.servlet.http.HttpUpgradeHandler; +import javax.servlet.http.Part; + +import org.apache.commons.collections.CollectionUtils; +import org.dspace.core.Utils; /** * A mock request for testing. * * @author mwood */ -class DummyHttpServletRequest implements HttpServletRequest { +public class DummyHttpServletRequest implements HttpServletRequest { private String agent = null; private String address = null; private String remoteHost = null; + private Map> headers = new HashMap<>(); + public void setAgent(String agent) { this.agent = agent; } @@ -45,6 +63,15 @@ class DummyHttpServletRequest implements HttpServletRequest { this.remoteHost = host; } + /* (non-Javadoc) + * @see javax.servlet.http.HttpServletRequest#changeSessionId + */ + @Override + public String changeSessionId() { + // TODO Auto-generated method stub + return null; + } + /* (non-Javadoc) * @see javax.servlet.http.HttpServletRequest#getAuthType() */ @@ -81,6 +108,24 @@ class DummyHttpServletRequest implements HttpServletRequest { return 0; } + /** + * Add a request header to this dummy request + * @param headerName The name of the header to add + * @param headerValue The value of the header + */ + public void addHeader(String headerName, String headerValue) { + List values = headers.computeIfAbsent(headerName, k -> new LinkedList<>()); + values.add(headerValue); + } + /* (non-Javadoc) + * @see javax.servlet.http.HttpServletRequest#getDispatcherType() + */ + @Override + public DispatcherType getDispatcherType() { + // TODO Auto-generated method stub + return null; + } + /* (non-Javadoc) * @see javax.servlet.http.HttpServletRequest#getHeader(java.lang.String) */ @@ -89,7 +134,7 @@ class DummyHttpServletRequest implements HttpServletRequest { if ("User-Agent".equals(key)) { return agent; } else { - return null; + return CollectionUtils.isEmpty(headers.get(key)) ? null : headers.get(key).get(0); } } @@ -98,8 +143,7 @@ class DummyHttpServletRequest implements HttpServletRequest { */ @Override public Enumeration getHeaderNames() { - // TODO Auto-generated method stub - return null; + return Collections.enumeration(headers.keySet()); } /* (non-Javadoc) @@ -107,8 +151,7 @@ class DummyHttpServletRequest implements HttpServletRequest { */ @Override public Enumeration getHeaders(String arg0) { - // TODO Auto-generated method stub - return null; + return Collections.enumeration(Utils.emptyIfNull(headers.get(arg0))); } /* (non-Javadoc) @@ -116,8 +159,7 @@ class DummyHttpServletRequest implements HttpServletRequest { */ @Override public int getIntHeader(String arg0) { - // TODO Auto-generated method stub - return 0; + return headers.containsKey(arg0) ? Integer.parseInt(getHeader(arg0)) : -1; } /* (non-Javadoc) @@ -255,6 +297,55 @@ class DummyHttpServletRequest implements HttpServletRequest { return false; } + /* (non-Javadoc) + * @see javax.servlet.http.HttpServletRequest#authenticate(javax.servlet.http.HttpServletResponse) + */ + @Override + public boolean authenticate(HttpServletResponse httpServletResponse) { + return false; + } + + /* (non-Javadoc) + * @see javax.servlet.http.HttpServletRequest#login(java.lang.String,java.lang.String) + */ + @Override + public void login(String s, String s1) { + return; + } + + /* (non-Javadoc) + * @see javax.servlet.http.HttpServletRequest#logout() + */ + @Override + public void logout() { + return; + } + + /* (non-Javadoc) + * @see javax.servlet.http.HttpServletRequest#getPart(java.lang.String) + */ + @Override + public Part getPart(String arg0) { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see javax.servlet.http.HttpServletRequest#getParts() + */ + @Override + public Collection getParts() { + return null; + } + + /* (non-Javadoc) + * @see javax.servlet.http.HttpServletRequest#upgrade(java.lang.Class) + */ + @Override + public T upgrade(Class aClass) throws IOException, ServletException { + return null; + } + /* (non-Javadoc) * @see javax.servlet.http.HttpServletRequest#isRequestedSessionIdValid() */ @@ -309,6 +400,14 @@ class DummyHttpServletRequest implements HttpServletRequest { return 0; } + /* (non-Javadoc) + * @see javax.servlet.ServletRequest#getContentLengthLong() + */ + @Override + public long getContentLengthLong() { + return 0; + } + /* (non-Javadoc) * @see javax.servlet.ServletRequest#getContentType() */ @@ -490,10 +589,51 @@ class DummyHttpServletRequest implements HttpServletRequest { */ @Override public void setCharacterEncoding(String arg0) - throws UnsupportedEncodingException { + throws UnsupportedOperationException { throw new UnsupportedOperationException("Not supported yet."); } + /* (non-Javadoc) + * @see javax.servlet.ServletRequest#startAsync + */ + @Override + public AsyncContext startAsync() throws IllegalStateException { + throw new IllegalStateException("Not supported yet."); + } + + /* (non-Javadoc) + * @see javax.servlet.ServletRequest#startAsync(javax.servlet.ServletRequest,javax.servlet.ServletResponse) + */ + @Override + public AsyncContext startAsync(ServletRequest servletRequest, ServletResponse servletResponse) + throws IllegalStateException { + throw new IllegalStateException("Not supported yet."); + } + + /* (non-Javadoc) + * @see javax.servlet.ServletRequest#isAsyncStarted + */ + @Override + public boolean isAsyncStarted() { + return false; + } + + /* (non-Javadoc) + * @see javax.servlet.ServletRequest#isAsyncSupported + */ + @Override + public boolean isAsyncSupported() { + return false; + } + + /* (non-Javadoc) + * @see javax.servlet.ServletRequest#getAsyncContext + */ + @Override + public AsyncContext getAsyncContext() { + return null; + } + @Override public int getRemotePort() { throw new UnsupportedOperationException("Not supported yet."); @@ -514,4 +654,12 @@ class DummyHttpServletRequest implements HttpServletRequest { throw new UnsupportedOperationException("Not supported yet."); } + /* (non-Javadoc) + * @see javax.servlet.ServletRequest#getServletContext + */ + @Override + public ServletContext getServletContext() { + return null; + } + } diff --git a/dspace-api/src/test/java/org/dspace/statistics/util/SpiderDetectorServiceImplTest.java b/dspace-api/src/test/java/org/dspace/statistics/util/SpiderDetectorServiceImplTest.java index 5566562580..6abda2b13e 100644 --- a/dspace-api/src/test/java/org/dspace/statistics/util/SpiderDetectorServiceImplTest.java +++ b/dspace-api/src/test/java/org/dspace/statistics/util/SpiderDetectorServiceImplTest.java @@ -13,6 +13,8 @@ import static org.junit.Assert.assertTrue; import mockit.Mock; import mockit.MockUp; import org.dspace.AbstractDSpaceTest; +import org.dspace.core.factory.CoreServiceFactory; +import org.dspace.service.ClientInfoService; import org.dspace.services.ConfigurationService; import org.dspace.services.factory.DSpaceServicesFactory; import org.dspace.statistics.SolrLoggerServiceImpl; @@ -32,14 +34,15 @@ public class SpiderDetectorServiceImplTest extends AbstractDSpaceTest { private ConfigurationService configurationService; + private ClientInfoService clientInfoService; private SpiderDetectorService spiderDetectorService; @Before public void init() { configurationService = DSpaceServicesFactory.getInstance().getConfigurationService(); - spiderDetectorService = new SpiderDetectorServiceImpl(configurationService); - + clientInfoService = CoreServiceFactory.getInstance().getClientInfoService(); + spiderDetectorService = new SpiderDetectorServiceImpl(configurationService, clientInfoService); } @Test @@ -60,7 +63,7 @@ public class SpiderDetectorServiceImplTest extends AbstractDSpaceTest { @Test public void testCaseInsensitiveMatching() throws Exception { configurationService.setProperty("usage-statistics.bots.case-insensitive", true); - spiderDetectorService = new SpiderDetectorServiceImpl(configurationService); + spiderDetectorService = new SpiderDetectorServiceImpl(configurationService, clientInfoService); DummyHttpServletRequest req = new DummyHttpServletRequest(); req.setAddress(NOT_A_BOT_ADDRESS); // avoid surprises @@ -265,7 +268,7 @@ public class SpiderDetectorServiceImplTest extends AbstractDSpaceTest { public void testBothLowerAndUpperCaseGetMatched() { configurationService.setProperty("usage-statistics.bots.case-insensitive", true); - spiderDetectorService = new SpiderDetectorServiceImpl(configurationService); + spiderDetectorService = new SpiderDetectorServiceImpl(configurationService, clientInfoService); DummyHttpServletRequest req = new DummyHttpServletRequest(); req.setAddress(NOT_A_BOT_ADDRESS); // avoid surprises @@ -297,7 +300,7 @@ public class SpiderDetectorServiceImplTest extends AbstractDSpaceTest { @Test public void testNonBooleanConfig() { configurationService.setProperty("usage-statistics.bots.case-insensitive", "RandomNonBooleanString"); - spiderDetectorService = new SpiderDetectorServiceImpl(configurationService); + spiderDetectorService = new SpiderDetectorServiceImpl(configurationService, clientInfoService); DummyHttpServletRequest req = new DummyHttpServletRequest(); req.setAddress(NOT_A_BOT_ADDRESS); // avoid surprises diff --git a/dspace-api/src/test/java/org/dspace/workflowbasic/BasicWorkflowAuthorizationIT.java b/dspace-api/src/test/java/org/dspace/workflowbasic/BasicWorkflowAuthorizationIT.java index 1bf2bc1ba8..e38f153d8f 100644 --- a/dspace-api/src/test/java/org/dspace/workflowbasic/BasicWorkflowAuthorizationIT.java +++ b/dspace-api/src/test/java/org/dspace/workflowbasic/BasicWorkflowAuthorizationIT.java @@ -12,7 +12,7 @@ import java.io.FileInputStream; import java.io.IOException; import java.sql.SQLException; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.AbstractDSpaceTest; import org.dspace.AbstractIntegrationTest; import org.dspace.authorize.AuthorizeException; @@ -62,7 +62,7 @@ public class BasicWorkflowAuthorizationIT /** * log4j category */ - private static final Logger log = Logger.getLogger(BasicWorkflowAuthorizationIT.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(BasicWorkflowAuthorizationIT.class); protected CommunityService communityService = ContentServiceFactory.getInstance().getCommunityService(); protected CollectionService collectionService = ContentServiceFactory.getInstance().getCollectionService(); diff --git a/dspace-api/src/test/java/org/dspace/workflowbasic/BasicWorkflowAuthorizationRolesIT.java b/dspace-api/src/test/java/org/dspace/workflowbasic/BasicWorkflowAuthorizationRolesIT.java index cdaf38077d..83647738ea 100644 --- a/dspace-api/src/test/java/org/dspace/workflowbasic/BasicWorkflowAuthorizationRolesIT.java +++ b/dspace-api/src/test/java/org/dspace/workflowbasic/BasicWorkflowAuthorizationRolesIT.java @@ -17,7 +17,7 @@ import java.util.Date; import java.util.HashMap; import java.util.UUID; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.AbstractDSpaceTest; import org.dspace.AbstractIntegrationTest; import org.dspace.authorize.AuthorizeException; @@ -65,7 +65,7 @@ public class BasicWorkflowAuthorizationRolesIT /** * log4j category */ - private static final Logger log = Logger.getLogger(BasicWorkflowAuthorizationIT.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(BasicWorkflowAuthorizationIT.class); protected CommunityService communityService = ContentServiceFactory.getInstance().getCommunityService(); protected CollectionService collectionService = ContentServiceFactory.getInstance().getCollectionService(); diff --git a/dspace-api/src/test/resources/log4j.properties b/dspace-api/src/test/resources/log4j.properties index 93a4ec7ff5..4e7fbff3e3 100644 --- a/dspace-api/src/test/resources/log4j.properties +++ b/dspace-api/src/test/resources/log4j.properties @@ -19,10 +19,10 @@ log4j.rootCategory=INFO, A1 # A1 is set to be a ConsoleAppender. -log4j.appender.A1=org.apache.log4j.ConsoleAppender +log4j.appender.A1=org.apache.logging.log4j.ConsoleAppender # A1 uses PatternLayout. -log4j.appender.A1.layout=org.apache.log4j.PatternLayout +log4j.appender.A1.layout=org.apache.logging.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%d %-5p %c @ %m%n # block passwords from being exposed in Axis logs. @@ -44,9 +44,9 @@ log4j.logger.org.dspace.servicemanager=ERROR log4j.logger.org.dspace.providers=ERROR log4j.logger.org.dspace.utils=ERROR -log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout=org.apache.logging.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out -log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout=org.apache.logging.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n # # Root logger option diff --git a/dspace-oai/pom.xml b/dspace-oai/pom.xml index 77472986e4..9a66c4c86a 100644 --- a/dspace-oai/pom.xml +++ b/dspace-oai/pom.xml @@ -16,7 +16,6 @@ ${basedir}/.. - 3.2.5.RELEASE 3.2.10 2.0.1 @@ -81,8 +80,8 @@ commons-io - commons-lang - commons-lang + org.apache.commons + commons-lang3 @@ -107,7 +106,15 @@ org.apache.commons commons-lang3 - + + + log4j + log4j + + + org.slf4j + slf4j-log4j12 + @@ -144,10 +151,6 @@ jtwig-spring ${jtwig.version} - - org.ow2.asm - asm - com.google.guava guava @@ -160,6 +163,18 @@ org.apache.commons commons-lang3 + + javax.servlet + servlet-api + + + log4j + log4j + + + org.slf4j + slf4j-log4j12 + @@ -185,18 +200,26 @@ javax.servlet - servlet-api + javax.servlet-api provided - log4j - log4j + org.apache.logging.log4j + log4j-api - org.slf4j - slf4j-log4j12 + org.apache.logging.log4j + log4j-core + + + org.apache.logging.log4j + log4j-web + + + org.apache.logging.log4j + log4j-slf4j-impl runtime @@ -224,10 +247,12 @@ junit test + + org.hamcrest hamcrest-all - test + compile org.mockito diff --git a/dspace-oai/src/main/java/org/dspace/xoai/app/BasicConfiguration.java b/dspace-oai/src/main/java/org/dspace/xoai/app/BasicConfiguration.java index 2edac1ce43..bc83483d7b 100644 --- a/dspace-oai/src/main/java/org/dspace/xoai/app/BasicConfiguration.java +++ b/dspace-oai/src/main/java/org/dspace/xoai/app/BasicConfiguration.java @@ -8,7 +8,7 @@ package org.dspace.xoai.app; import com.lyncode.xoai.dataprovider.services.api.ResourceResolver; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.xoai.services.api.CollectionsService; import org.dspace.xoai.services.api.EarliestDateResolver; import org.dspace.xoai.services.api.FieldResolver; @@ -49,7 +49,7 @@ import org.springframework.context.annotation.Configuration; @Configuration public class BasicConfiguration { - private static final Logger log = Logger.getLogger(BasicConfiguration.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(BasicConfiguration.class); @Bean public ConfigurationService configurationService() { diff --git a/dspace-oai/src/main/java/org/dspace/xoai/app/XOAI.java b/dspace-oai/src/main/java/org/dspace/xoai/app/XOAI.java index aff9195264..eae538b50b 100644 --- a/dspace-oai/src/main/java/org/dspace/xoai/app/XOAI.java +++ b/dspace-oai/src/main/java/org/dspace/xoai/app/XOAI.java @@ -34,8 +34,8 @@ import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.CommandLineParser; import org.apache.commons.cli.Options; import org.apache.commons.cli.PosixParser; -import org.apache.log4j.LogManager; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.SolrQuery.ORDER; import org.apache.solr.client.solrj.SolrServer; @@ -326,7 +326,7 @@ public class XOAI { List dates = new LinkedList(); List policies = authorizeService.getPoliciesActionFilter(context, item, Constants.READ); for (ResourcePolicy policy : policies) { - if (policy.getGroup().getName().equals("Anonymous")) { + if ((policy.getGroup() != null) && (policy.getGroup().getName().equals("Anonymous"))) { if (policy.getStartDate() != null) { dates.add(policy.getStartDate()); } @@ -450,8 +450,7 @@ public class XOAI { private boolean willChangeStatus(Item item) throws SQLException { List policies = authorizeService.getPoliciesActionFilter(context, item, Constants.READ); for (ResourcePolicy policy : policies) { - if (policy.getGroup().getName().equals("Anonymous")) { - + if ((policy.getGroup() != null) && (policy.getGroup().getName().equals("Anonymous"))) { if (policy.getStartDate() != null && policy.getStartDate().after(new Date())) { return true; } diff --git a/dspace-oai/src/main/java/org/dspace/xoai/controller/DSpaceOAIDataProvider.java b/dspace-oai/src/main/java/org/dspace/xoai/controller/DSpaceOAIDataProvider.java index 456785c1e4..96e82d8eae 100644 --- a/dspace-oai/src/main/java/org/dspace/xoai/controller/DSpaceOAIDataProvider.java +++ b/dspace-oai/src/main/java/org/dspace/xoai/controller/DSpaceOAIDataProvider.java @@ -9,7 +9,7 @@ package org.dspace.xoai.controller; import static java.util.Arrays.asList; import static javax.servlet.http.HttpServletResponse.SC_BAD_REQUEST; -import static org.apache.log4j.Logger.getLogger; +import static org.apache.logging.log4j.LogManager.getLogger; import java.io.IOException; import java.io.OutputStream; @@ -28,7 +28,7 @@ import com.lyncode.xoai.dataprovider.core.XOAIManager; import com.lyncode.xoai.dataprovider.exceptions.InvalidContextException; import com.lyncode.xoai.dataprovider.exceptions.OAIException; import com.lyncode.xoai.dataprovider.exceptions.WritingXmlException; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.core.Context; import org.dspace.xoai.services.api.cache.XOAICacheService; import org.dspace.xoai.services.api.config.XOAIManagerResolver; diff --git a/dspace-oai/src/main/java/org/dspace/xoai/data/DSpaceSolrItem.java b/dspace-oai/src/main/java/org/dspace/xoai/data/DSpaceSolrItem.java index a9b5818f3d..76d7336531 100644 --- a/dspace-oai/src/main/java/org/dspace/xoai/data/DSpaceSolrItem.java +++ b/dspace-oai/src/main/java/org/dspace/xoai/data/DSpaceSolrItem.java @@ -14,8 +14,8 @@ import java.util.List; import com.lyncode.xoai.dataprovider.core.ItemMetadata; import com.lyncode.xoai.dataprovider.core.ReferenceSet; -import org.apache.log4j.LogManager; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.solr.common.SolrDocument; /** diff --git a/dspace-oai/src/main/java/org/dspace/xoai/filter/DSpaceAtLeastOneMetadataFilter.java b/dspace-oai/src/main/java/org/dspace/xoai/filter/DSpaceAtLeastOneMetadataFilter.java index b84868cf23..63ff355650 100644 --- a/dspace-oai/src/main/java/org/dspace/xoai/filter/DSpaceAtLeastOneMetadataFilter.java +++ b/dspace-oai/src/main/java/org/dspace/xoai/filter/DSpaceAtLeastOneMetadataFilter.java @@ -16,9 +16,9 @@ import com.lyncode.builder.ListBuilder; import com.lyncode.xoai.dataprovider.xml.xoaiconfig.parameters.ParameterList; import com.lyncode.xoai.dataprovider.xml.xoaiconfig.parameters.ParameterValue; import com.lyncode.xoai.dataprovider.xml.xoaiconfig.parameters.SimpleType; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.LogManager; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.solr.client.solrj.util.ClientUtils; import org.dspace.xoai.data.DSpaceItem; import org.dspace.xoai.filter.data.DSpaceMetadataFilterOperator; diff --git a/dspace-oai/src/main/java/org/dspace/xoai/filter/DSpaceAuthorizationFilter.java b/dspace-oai/src/main/java/org/dspace/xoai/filter/DSpaceAuthorizationFilter.java index 5b6bd3d1b4..ebb19c84b5 100644 --- a/dspace-oai/src/main/java/org/dspace/xoai/filter/DSpaceAuthorizationFilter.java +++ b/dspace-oai/src/main/java/org/dspace/xoai/filter/DSpaceAuthorizationFilter.java @@ -10,8 +10,8 @@ package org.dspace.xoai.filter; import java.sql.SQLException; -import org.apache.log4j.LogManager; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.factory.AuthorizeServiceFactory; import org.dspace.authorize.service.AuthorizeService; import org.dspace.content.Item; diff --git a/dspace-oai/src/main/java/org/dspace/xoai/filter/DSpaceMetadataExistsFilter.java b/dspace-oai/src/main/java/org/dspace/xoai/filter/DSpaceMetadataExistsFilter.java index bad0c4975a..ac9c81600a 100644 --- a/dspace-oai/src/main/java/org/dspace/xoai/filter/DSpaceMetadataExistsFilter.java +++ b/dspace-oai/src/main/java/org/dspace/xoai/filter/DSpaceMetadataExistsFilter.java @@ -12,8 +12,8 @@ import java.util.List; import com.lyncode.xoai.dataprovider.xml.xoaiconfig.parameters.ParameterValue; import com.lyncode.xoai.dataprovider.xml.xoaiconfig.parameters.SimpleType; -import org.apache.log4j.LogManager; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.dspace.xoai.data.DSpaceItem; import org.dspace.xoai.filter.results.SolrFilterResult; diff --git a/dspace-oai/src/main/java/org/dspace/xoai/filter/DSpaceSetSpecFilter.java b/dspace-oai/src/main/java/org/dspace/xoai/filter/DSpaceSetSpecFilter.java index 502653a39c..b89056943b 100644 --- a/dspace-oai/src/main/java/org/dspace/xoai/filter/DSpaceSetSpecFilter.java +++ b/dspace-oai/src/main/java/org/dspace/xoai/filter/DSpaceSetSpecFilter.java @@ -8,8 +8,8 @@ package org.dspace.xoai.filter; import com.lyncode.xoai.dataprovider.core.ReferenceSet; -import org.apache.log4j.LogManager; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.solr.client.solrj.util.ClientUtils; import org.dspace.xoai.data.DSpaceItem; import org.dspace.xoai.filter.results.SolrFilterResult; diff --git a/dspace-oai/src/main/java/org/dspace/xoai/filter/SolrFilterResult.java b/dspace-oai/src/main/java/org/dspace/xoai/filter/SolrFilterResult.java index 37aa1b1c13..41a2a667c3 100644 --- a/dspace-oai/src/main/java/org/dspace/xoai/filter/SolrFilterResult.java +++ b/dspace-oai/src/main/java/org/dspace/xoai/filter/SolrFilterResult.java @@ -7,8 +7,8 @@ */ package org.dspace.xoai.filter; -import org.apache.log4j.LogManager; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; /** * @author Lyncode Development Team (dspace at lyncode dot com) diff --git a/dspace-oai/src/main/java/org/dspace/xoai/filter/results/SolrFilterResult.java b/dspace-oai/src/main/java/org/dspace/xoai/filter/results/SolrFilterResult.java index 38d0716950..21425fdda4 100644 --- a/dspace-oai/src/main/java/org/dspace/xoai/filter/results/SolrFilterResult.java +++ b/dspace-oai/src/main/java/org/dspace/xoai/filter/results/SolrFilterResult.java @@ -7,8 +7,8 @@ */ package org.dspace.xoai.filter.results; -import org.apache.log4j.LogManager; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; /** * @author Lyncode Development Team (dspace at lyncode dot com) diff --git a/dspace-oai/src/main/java/org/dspace/xoai/services/impl/DSpaceEarliestDateResolver.java b/dspace-oai/src/main/java/org/dspace/xoai/services/impl/DSpaceEarliestDateResolver.java index 01ec853539..de8dc0d4ad 100644 --- a/dspace-oai/src/main/java/org/dspace/xoai/services/impl/DSpaceEarliestDateResolver.java +++ b/dspace-oai/src/main/java/org/dspace/xoai/services/impl/DSpaceEarliestDateResolver.java @@ -10,8 +10,8 @@ package org.dspace.xoai.services.impl; import java.sql.SQLException; import java.util.Date; -import org.apache.log4j.LogManager; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.dspace.content.MetadataValue; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.MetadataValueService; diff --git a/dspace-oai/src/main/java/org/dspace/xoai/services/impl/MetadataFieldCache.java b/dspace-oai/src/main/java/org/dspace/xoai/services/impl/MetadataFieldCache.java index bdcab2bbf4..5db2ff4103 100644 --- a/dspace-oai/src/main/java/org/dspace/xoai/services/impl/MetadataFieldCache.java +++ b/dspace-oai/src/main/java/org/dspace/xoai/services/impl/MetadataFieldCache.java @@ -10,8 +10,8 @@ package org.dspace.xoai.services.impl; import java.util.HashMap; import java.util.Map; -import org.apache.log4j.LogManager; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; /** * @author Lyncode Development Team (dspace at lyncode dot com) diff --git a/dspace-oai/src/main/java/org/dspace/xoai/services/impl/solr/DSpaceSolrQueryResolver.java b/dspace-oai/src/main/java/org/dspace/xoai/services/impl/solr/DSpaceSolrQueryResolver.java index de58edd542..2e91f4c9d4 100644 --- a/dspace-oai/src/main/java/org/dspace/xoai/services/impl/solr/DSpaceSolrQueryResolver.java +++ b/dspace-oai/src/main/java/org/dspace/xoai/services/impl/solr/DSpaceSolrQueryResolver.java @@ -13,7 +13,7 @@ import java.util.List; import com.lyncode.xoai.dataprovider.filter.Scope; import com.lyncode.xoai.dataprovider.filter.ScopedFilter; import com.lyncode.xoai.dataprovider.filter.conditions.Condition; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.dspace.xoai.services.api.solr.SolrQueryResolver; import org.dspace.xoai.services.api.xoai.DSpaceFilterResolver; import org.springframework.beans.factory.annotation.Autowired; diff --git a/dspace-oai/src/main/java/org/dspace/xoai/services/impl/solr/DSpaceSolrServerResolver.java b/dspace-oai/src/main/java/org/dspace/xoai/services/impl/solr/DSpaceSolrServerResolver.java index fe71aacad7..c2a26b53b3 100644 --- a/dspace-oai/src/main/java/org/dspace/xoai/services/impl/solr/DSpaceSolrServerResolver.java +++ b/dspace-oai/src/main/java/org/dspace/xoai/services/impl/solr/DSpaceSolrServerResolver.java @@ -7,8 +7,8 @@ */ package org.dspace.xoai.services.impl.solr; -import org.apache.log4j.LogManager; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.solr.client.solrj.SolrServer; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.impl.HttpSolrServer; diff --git a/dspace-oai/src/main/java/org/dspace/xoai/services/impl/xoai/BaseDSpaceFilterResolver.java b/dspace-oai/src/main/java/org/dspace/xoai/services/impl/xoai/BaseDSpaceFilterResolver.java index 43df0dca82..41c2f76663 100644 --- a/dspace-oai/src/main/java/org/dspace/xoai/services/impl/xoai/BaseDSpaceFilterResolver.java +++ b/dspace-oai/src/main/java/org/dspace/xoai/services/impl/xoai/BaseDSpaceFilterResolver.java @@ -17,7 +17,7 @@ import com.lyncode.xoai.dataprovider.filter.conditions.CustomCondition; import com.lyncode.xoai.dataprovider.filter.conditions.NotCondition; import com.lyncode.xoai.dataprovider.filter.conditions.OrCondition; import com.lyncode.xoai.dataprovider.xml.xoaiconfig.parameters.ParameterMap; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.xoai.filter.AndFilter; import org.dspace.xoai.filter.DSpaceFilter; import org.dspace.xoai.filter.NotFilter; @@ -30,7 +30,7 @@ import org.dspace.xoai.services.api.xoai.DSpaceFilterResolver; import org.springframework.beans.factory.annotation.Autowired; public class BaseDSpaceFilterResolver implements DSpaceFilterResolver { - private static final Logger LOGGER = Logger.getLogger(BaseDSpaceFilterResolver.class); + private static final Logger LOGGER = org.apache.logging.log4j.LogManager.getLogger(BaseDSpaceFilterResolver.class); @Autowired FieldResolver fieldResolver; diff --git a/dspace-oai/src/main/java/org/dspace/xoai/services/impl/xoai/DSpaceItemSolrRepository.java b/dspace-oai/src/main/java/org/dspace/xoai/services/impl/xoai/DSpaceItemSolrRepository.java index 1836444369..9d36797e10 100644 --- a/dspace-oai/src/main/java/org/dspace/xoai/services/impl/xoai/DSpaceItemSolrRepository.java +++ b/dspace-oai/src/main/java/org/dspace/xoai/services/impl/xoai/DSpaceItemSolrRepository.java @@ -19,8 +19,8 @@ import com.lyncode.xoai.dataprovider.data.Item; import com.lyncode.xoai.dataprovider.data.ItemIdentifier; import com.lyncode.xoai.dataprovider.exceptions.IdDoesNotExistException; import com.lyncode.xoai.dataprovider.filter.ScopedFilter; -import org.apache.log4j.LogManager; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.SolrServer; import org.apache.solr.common.SolrDocument; diff --git a/dspace-oai/src/main/java/org/dspace/xoai/services/impl/xoai/DSpaceRepositoryConfiguration.java b/dspace-oai/src/main/java/org/dspace/xoai/services/impl/xoai/DSpaceRepositoryConfiguration.java index d6cc49c286..979520c199 100644 --- a/dspace-oai/src/main/java/org/dspace/xoai/services/impl/xoai/DSpaceRepositoryConfiguration.java +++ b/dspace-oai/src/main/java/org/dspace/xoai/services/impl/xoai/DSpaceRepositoryConfiguration.java @@ -19,8 +19,8 @@ import com.lyncode.xoai.dataprovider.core.DeleteMethod; import com.lyncode.xoai.dataprovider.core.Granularity; import com.lyncode.xoai.dataprovider.services.api.RepositoryConfiguration; import org.apache.commons.io.FileUtils; -import org.apache.log4j.LogManager; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.dspace.core.Context; import org.dspace.xoai.exceptions.InvalidMetadataFieldException; import org.dspace.xoai.services.api.EarliestDateResolver; diff --git a/dspace-oai/src/main/java/org/dspace/xoai/services/impl/xoai/DSpaceResumptionTokenFormatter.java b/dspace-oai/src/main/java/org/dspace/xoai/services/impl/xoai/DSpaceResumptionTokenFormatter.java index f79cd873ee..c51b11eabf 100644 --- a/dspace-oai/src/main/java/org/dspace/xoai/services/impl/xoai/DSpaceResumptionTokenFormatter.java +++ b/dspace-oai/src/main/java/org/dspace/xoai/services/impl/xoai/DSpaceResumptionTokenFormatter.java @@ -12,8 +12,8 @@ import java.util.Date; import com.lyncode.xoai.dataprovider.core.ResumptionToken; import com.lyncode.xoai.dataprovider.exceptions.BadResumptionToken; import com.lyncode.xoai.dataprovider.services.api.ResumptionTokenFormatter; -import org.apache.log4j.LogManager; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.dspace.xoai.util.DateUtils; diff --git a/dspace-oai/src/main/java/org/dspace/xoai/services/impl/xoai/DSpaceSetRepository.java b/dspace-oai/src/main/java/org/dspace/xoai/services/impl/xoai/DSpaceSetRepository.java index 859f2390a8..c322c988a5 100644 --- a/dspace-oai/src/main/java/org/dspace/xoai/services/impl/xoai/DSpaceSetRepository.java +++ b/dspace-oai/src/main/java/org/dspace/xoai/services/impl/xoai/DSpaceSetRepository.java @@ -14,8 +14,8 @@ import java.util.List; import com.lyncode.xoai.dataprovider.core.ListSetsResult; import com.lyncode.xoai.dataprovider.core.Set; import com.lyncode.xoai.dataprovider.services.api.SetRepository; -import org.apache.log4j.LogManager; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.dspace.content.Collection; import org.dspace.content.Community; import org.dspace.content.DSpaceObject; diff --git a/dspace-oai/src/main/java/org/dspace/xoai/solr/DSpaceSolrServer.java b/dspace-oai/src/main/java/org/dspace/xoai/solr/DSpaceSolrServer.java index 975bb8ada6..365a718a92 100644 --- a/dspace-oai/src/main/java/org/dspace/xoai/solr/DSpaceSolrServer.java +++ b/dspace-oai/src/main/java/org/dspace/xoai/solr/DSpaceSolrServer.java @@ -8,8 +8,8 @@ package org.dspace.xoai.solr; -import org.apache.log4j.LogManager; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.solr.client.solrj.SolrServer; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.impl.HttpSolrServer; diff --git a/dspace-oai/src/main/java/org/dspace/xoai/util/DateUtils.java b/dspace-oai/src/main/java/org/dspace/xoai/util/DateUtils.java index 611d0692f7..9ecef225a0 100644 --- a/dspace-oai/src/main/java/org/dspace/xoai/util/DateUtils.java +++ b/dspace-oai/src/main/java/org/dspace/xoai/util/DateUtils.java @@ -13,8 +13,8 @@ import java.util.Date; import java.util.Locale; import java.util.TimeZone; -import org.apache.log4j.LogManager; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; /** * @author Lyncode Development Team (dspace at lyncode dot com) diff --git a/dspace-oai/src/main/java/org/dspace/xoai/util/ItemUtils.java b/dspace-oai/src/main/java/org/dspace/xoai/util/ItemUtils.java index 1faee45890..10bbc61e70 100644 --- a/dspace-oai/src/main/java/org/dspace/xoai/util/ItemUtils.java +++ b/dspace-oai/src/main/java/org/dspace/xoai/util/ItemUtils.java @@ -16,8 +16,8 @@ import java.util.List; import com.lyncode.xoai.dataprovider.xml.xoai.Element; import com.lyncode.xoai.dataprovider.xml.xoai.Metadata; import com.lyncode.xoai.util.Base64Utils; -import org.apache.log4j.LogManager; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.dspace.app.util.factory.UtilServiceFactory; import org.dspace.app.util.service.MetadataExposureService; import org.dspace.authorize.AuthorizeException; diff --git a/dspace-oai/src/main/java/org/dspace/xoai/util/URLUtils.java b/dspace-oai/src/main/java/org/dspace/xoai/util/URLUtils.java index c0ddf3e701..f7661d5908 100644 --- a/dspace-oai/src/main/java/org/dspace/xoai/util/URLUtils.java +++ b/dspace-oai/src/main/java/org/dspace/xoai/util/URLUtils.java @@ -9,8 +9,8 @@ package org.dspace.xoai.util; import java.io.UnsupportedEncodingException; -import org.apache.log4j.LogManager; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.dspace.app.util.Util; import org.dspace.core.Constants; diff --git a/dspace-oai/src/main/webapp/WEB-INF/web.xml b/dspace-oai/src/main/webapp/WEB-INF/web.xml index 33d3c2c31b..d731a0c659 100644 --- a/dspace-oai/src/main/webapp/WEB-INF/web.xml +++ b/dspace-oai/src/main/webapp/WEB-INF/web.xml @@ -8,9 +8,9 @@ http://www.dspace.org/license/ --> - + xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"> XOAI Data Provider @@ -20,6 +20,11 @@ ${dspace.dir} + + log4jConfiguration + ${dspace.dir}/config/log4j2.xml + The location of the Log4J configuration + diff --git a/dspace-oai/src/test/java/org/dspace/xoai/tests/helpers/stubs/StubbedSetRepository.java b/dspace-oai/src/test/java/org/dspace/xoai/tests/helpers/stubs/StubbedSetRepository.java index efe6125589..8432633e7b 100644 --- a/dspace-oai/src/test/java/org/dspace/xoai/tests/helpers/stubs/StubbedSetRepository.java +++ b/dspace-oai/src/test/java/org/dspace/xoai/tests/helpers/stubs/StubbedSetRepository.java @@ -8,7 +8,7 @@ package org.dspace.xoai.tests.helpers.stubs; import static java.lang.Math.min; -import static org.apache.commons.lang.RandomStringUtils.randomAlphabetic; +import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; import java.util.ArrayList; import java.util.List; diff --git a/dspace-rdf/pom.xml b/dspace-rdf/pom.xml index 5a7eeca9ab..9c6c154ddc 100644 --- a/dspace-rdf/pom.xml +++ b/dspace-rdf/pom.xml @@ -33,6 +33,18 @@ jackson-databind com.fasterxml.jackson.core + + org.slf4j + slf4j-api + + + org.slf4j + slf4j-log4j12 + + + log4j + log4j + pom @@ -64,16 +76,26 @@ javax.servlet - servlet-api + javax.servlet-api provided + - log4j - log4j + org.apache.logging.log4j + log4j-api - commons-lang - commons-lang + org.apache.logging.log4j + log4j-core + + + org.apache.logging.log4j + log4j-web + + + + org.apache.commons + commons-lang3 diff --git a/dspace-rdf/src/main/java/org/dspace/rdf/providing/DataProviderServlet.java b/dspace-rdf/src/main/java/org/dspace/rdf/providing/DataProviderServlet.java index 1e07364187..526f138a71 100644 --- a/dspace-rdf/src/main/java/org/dspace/rdf/providing/DataProviderServlet.java +++ b/dspace-rdf/src/main/java/org/dspace/rdf/providing/DataProviderServlet.java @@ -17,8 +17,8 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.hp.hpl.jena.rdf.model.Model; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.content.DSpaceObject; import org.dspace.core.Context; import org.dspace.handle.factory.HandleServiceFactory; @@ -33,7 +33,7 @@ public class DataProviderServlet extends HttpServlet { protected static final String DEFAULT_LANG = "TURTLE"; - private static final Logger log = Logger.getLogger(DataProviderServlet.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(DataProviderServlet.class); protected final transient HandleService handleService = HandleServiceFactory.getInstance().getHandleService(); diff --git a/dspace-rdf/src/main/java/org/dspace/rdf/providing/LocalURIRedirectionServlet.java b/dspace-rdf/src/main/java/org/dspace/rdf/providing/LocalURIRedirectionServlet.java index 33b4107128..b6a6854938 100644 --- a/dspace-rdf/src/main/java/org/dspace/rdf/providing/LocalURIRedirectionServlet.java +++ b/dspace-rdf/src/main/java/org/dspace/rdf/providing/LocalURIRedirectionServlet.java @@ -14,8 +14,8 @@ import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.content.DSpaceObject; import org.dspace.core.Context; import org.dspace.handle.factory.HandleServiceFactory; @@ -28,7 +28,7 @@ import org.dspace.rdf.negotiation.Negotiator; public class LocalURIRedirectionServlet extends HttpServlet { public static final String ACCEPT_HEADER_NAME = "Accept"; - private final static Logger log = Logger.getLogger(LocalURIRedirectionServlet.class); + private final static Logger log = org.apache.logging.log4j.LogManager.getLogger(LocalURIRedirectionServlet.class); protected final transient HandleService handleService = HandleServiceFactory.getInstance().getHandleService(); diff --git a/dspace-rdf/src/main/webapp/WEB-INF/web.xml b/dspace-rdf/src/main/webapp/WEB-INF/web.xml index 222e17de2c..c15ec675f3 100644 --- a/dspace-rdf/src/main/webapp/WEB-INF/web.xml +++ b/dspace-rdf/src/main/webapp/WEB-INF/web.xml @@ -8,10 +8,9 @@ http://www.dspace.org/license/ --> - + RDF Data Provider @@ -23,6 +22,14 @@ ${dspace.dir} + + log4jConfiguration + ${dspace.dir}/config/log4j2.xml + + The location of the Log4J configuration + + + dspace.request org.dspace.utils.servlet.DSpaceWebappServletFilter diff --git a/dspace-rest/pom.xml b/dspace-rest/pom.xml index ba7a990095..6d012d246a 100644 --- a/dspace-rest/pom.xml +++ b/dspace-rest/pom.xml @@ -220,7 +220,6 @@ javax.servlet javax.servlet-api - 3.1.0 provided @@ -229,9 +228,17 @@ 1.2.1 - log4j - log4j + org.apache.logging.log4j + log4j-api + + org.apache.logging.log4j + log4j-core + + + org.apache.logging.log4j + log4j-web + org.dspace dspace-services diff --git a/dspace-rest/src/main/java/org/dspace/rest/BitstreamResource.java b/dspace-rest/src/main/java/org/dspace/rest/BitstreamResource.java index eb96a53185..3a6ad85960 100644 --- a/dspace-rest/src/main/java/org/dspace/rest/BitstreamResource.java +++ b/dspace-rest/src/main/java/org/dspace/rest/BitstreamResource.java @@ -32,7 +32,7 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.authorize.factory.AuthorizeServiceFactory; import org.dspace.authorize.service.AuthorizeService; @@ -69,7 +69,7 @@ public class BitstreamResource extends Resource { .getResourcePolicyService(); protected GroupService groupService = EPersonServiceFactory.getInstance().getGroupService(); - private static Logger log = Logger.getLogger(BitstreamResource.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(BitstreamResource.class); /** * Return bitstream properties without file data. It can throw diff --git a/dspace-rest/src/main/java/org/dspace/rest/CollectionsResource.java b/dspace-rest/src/main/java/org/dspace/rest/CollectionsResource.java index 7d5fd4c015..af06792b7b 100644 --- a/dspace-rest/src/main/java/org/dspace/rest/CollectionsResource.java +++ b/dspace-rest/src/main/java/org/dspace/rest/CollectionsResource.java @@ -29,7 +29,7 @@ import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.authorize.factory.AuthorizeServiceFactory; import org.dspace.authorize.service.AuthorizeService; @@ -60,7 +60,7 @@ public class CollectionsResource extends Resource { protected WorkspaceItemService workspaceItemService = ContentServiceFactory.getInstance().getWorkspaceItemService(); protected WorkflowService workflowService = WorkflowServiceFactory.getInstance().getWorkflowService(); - private static Logger log = Logger.getLogger(CollectionsResource.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(CollectionsResource.class); /** * Return instance of collection with passed id. You can add more properties diff --git a/dspace-rest/src/main/java/org/dspace/rest/CommunitiesResource.java b/dspace-rest/src/main/java/org/dspace/rest/CommunitiesResource.java index 331ae4cfd5..5ac25d69e9 100644 --- a/dspace-rest/src/main/java/org/dspace/rest/CommunitiesResource.java +++ b/dspace-rest/src/main/java/org/dspace/rest/CommunitiesResource.java @@ -28,7 +28,7 @@ import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.authorize.factory.AuthorizeServiceFactory; import org.dspace.authorize.service.AuthorizeService; @@ -51,7 +51,7 @@ public class CommunitiesResource extends Resource { protected CollectionService collectionService = ContentServiceFactory.getInstance().getCollectionService(); protected AuthorizeService authorizeService = AuthorizeServiceFactory.getInstance().getAuthorizeService(); - private static Logger log = Logger.getLogger(CommunitiesResource.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(CommunitiesResource.class); /** * Returns community with basic properties. If you want more, use expand diff --git a/dspace-rest/src/main/java/org/dspace/rest/FilteredCollectionsResource.java b/dspace-rest/src/main/java/org/dspace/rest/FilteredCollectionsResource.java index 7312e5c4b7..133ed50d9c 100644 --- a/dspace-rest/src/main/java/org/dspace/rest/FilteredCollectionsResource.java +++ b/dspace-rest/src/main/java/org/dspace/rest/FilteredCollectionsResource.java @@ -24,7 +24,7 @@ import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.factory.AuthorizeServiceFactory; import org.dspace.authorize.service.AuthorizeService; import org.dspace.content.factory.ContentServiceFactory; @@ -45,7 +45,7 @@ public class FilteredCollectionsResource extends Resource { protected AuthorizeService authorizeService = AuthorizeServiceFactory.getInstance().getAuthorizeService(); protected CollectionService collectionService = ContentServiceFactory.getInstance().getCollectionService(); protected ConfigurationService configurationService = DSpaceServicesFactory.getInstance().getConfigurationService(); - private static Logger log = Logger.getLogger(FilteredCollectionsResource.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(FilteredCollectionsResource.class); /** * Return array of all collections in DSpace. You can add more properties diff --git a/dspace-rest/src/main/java/org/dspace/rest/FilteredItemsResource.java b/dspace-rest/src/main/java/org/dspace/rest/FilteredItemsResource.java index 5129bce840..0f4331adc5 100644 --- a/dspace-rest/src/main/java/org/dspace/rest/FilteredItemsResource.java +++ b/dspace-rest/src/main/java/org/dspace/rest/FilteredItemsResource.java @@ -25,7 +25,7 @@ import javax.ws.rs.core.Context; import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.MediaType; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Item; import org.dspace.content.MetadataField; @@ -58,7 +58,7 @@ public class FilteredItemsResource extends Resource { protected SiteService siteService = ContentServiceFactory.getInstance().getSiteService(); protected ConfigurationService configurationService = DSpaceServicesFactory.getInstance().getConfigurationService(); - private static Logger log = Logger.getLogger(FilteredItemsResource.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(FilteredItemsResource.class); /** * Return instance of collection with passed id. You can add more properties diff --git a/dspace-rest/src/main/java/org/dspace/rest/FiltersResource.java b/dspace-rest/src/main/java/org/dspace/rest/FiltersResource.java index 904d62c6c8..bff755f2de 100644 --- a/dspace-rest/src/main/java/org/dspace/rest/FiltersResource.java +++ b/dspace-rest/src/main/java/org/dspace/rest/FiltersResource.java @@ -17,7 +17,7 @@ import javax.ws.rs.core.Context; import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.MediaType; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.rest.common.ItemFilter; /** @@ -27,7 +27,7 @@ import org.dspace.rest.common.ItemFilter; */ @Path("/filters") public class FiltersResource { - private static Logger log = Logger.getLogger(FiltersResource.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(FiltersResource.class); /** * Return all Use Case Item Filters in DSpace. diff --git a/dspace-rest/src/main/java/org/dspace/rest/HandleResource.java b/dspace-rest/src/main/java/org/dspace/rest/HandleResource.java index 71a3b8a084..51436a1c00 100644 --- a/dspace-rest/src/main/java/org/dspace/rest/HandleResource.java +++ b/dspace-rest/src/main/java/org/dspace/rest/HandleResource.java @@ -18,7 +18,7 @@ import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.factory.AuthorizeServiceFactory; import org.dspace.authorize.service.AuthorizeService; import org.dspace.content.factory.ContentServiceFactory; @@ -44,7 +44,7 @@ public class HandleResource extends Resource { protected HandleService handleService = HandleServiceFactory.getInstance().getHandleService(); protected AuthorizeService authorizeService = AuthorizeServiceFactory.getInstance().getAuthorizeService(); - private static Logger log = Logger.getLogger(HandleResource.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(HandleResource.class); @GET @Path("/{prefix}/{suffix}") diff --git a/dspace-rest/src/main/java/org/dspace/rest/HierarchyResource.java b/dspace-rest/src/main/java/org/dspace/rest/HierarchyResource.java index 716f361f76..b2ffc559b0 100644 --- a/dspace-rest/src/main/java/org/dspace/rest/HierarchyResource.java +++ b/dspace-rest/src/main/java/org/dspace/rest/HierarchyResource.java @@ -21,7 +21,7 @@ import javax.ws.rs.core.Context; import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.MediaType; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.factory.AuthorizeServiceFactory; import org.dspace.authorize.service.AuthorizeService; import org.dspace.content.Collection; @@ -45,7 +45,7 @@ import org.dspace.services.factory.DSpaceServicesFactory; @Path("/hierarchy") @Produces( {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) public class HierarchyResource extends Resource { - private static Logger log = Logger.getLogger(HierarchyResource.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(HierarchyResource.class); protected SiteService siteService = ContentServiceFactory.getInstance().getSiteService(); protected CommunityService communityService = ContentServiceFactory.getInstance().getCommunityService(); protected AuthorizeService authorizeService = AuthorizeServiceFactory.getInstance().getAuthorizeService(); diff --git a/dspace-rest/src/main/java/org/dspace/rest/ItemsResource.java b/dspace-rest/src/main/java/org/dspace/rest/ItemsResource.java index 84dd35e9a9..615aacac21 100644 --- a/dspace-rest/src/main/java/org/dspace/rest/ItemsResource.java +++ b/dspace-rest/src/main/java/org/dspace/rest/ItemsResource.java @@ -32,7 +32,7 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.authorize.factory.AuthorizeServiceFactory; import org.dspace.authorize.service.AuthorizeService; @@ -72,7 +72,7 @@ public class ItemsResource extends Resource { .getResourcePolicyService(); protected GroupService groupService = EPersonServiceFactory.getInstance().getGroupService(); - private static final Logger log = Logger.getLogger(ItemsResource.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(ItemsResource.class); /** * Return item properties without metadata and bitstreams. You can add diff --git a/dspace-rest/src/main/java/org/dspace/rest/MetadataRegistryResource.java b/dspace-rest/src/main/java/org/dspace/rest/MetadataRegistryResource.java index 333f611f6c..79e655e63d 100644 --- a/dspace-rest/src/main/java/org/dspace/rest/MetadataRegistryResource.java +++ b/dspace-rest/src/main/java/org/dspace/rest/MetadataRegistryResource.java @@ -28,7 +28,7 @@ import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.authorize.factory.AuthorizeServiceFactory; import org.dspace.authorize.service.AuthorizeService; @@ -70,7 +70,7 @@ public class MetadataRegistryResource extends Resource { protected MetadataSchemaService metadataSchemaService = ContentServiceFactory.getInstance() .getMetadataSchemaService(); protected SiteService siteService = ContentServiceFactory.getInstance().getSiteService(); - private static Logger log = Logger.getLogger(MetadataRegistryResource.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(MetadataRegistryResource.class); /** * Return all metadata registry items in DSpace. diff --git a/dspace-rest/src/main/java/org/dspace/rest/Resource.java b/dspace-rest/src/main/java/org/dspace/rest/Resource.java index 65fdbd2048..7a7624fef0 100644 --- a/dspace-rest/src/main/java/org/dspace/rest/Resource.java +++ b/dspace-rest/src/main/java/org/dspace/rest/Resource.java @@ -16,7 +16,7 @@ import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.Response; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.DSpaceObject; import org.dspace.core.Context; import org.dspace.eperson.factory.EPersonServiceFactory; @@ -40,7 +40,7 @@ public class Resource { @javax.ws.rs.core.Context public ServletContext servletContext; - private static Logger log = Logger.getLogger(Resource.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(Resource.class); private static final boolean writeStatistics; diff --git a/dspace-rest/src/main/java/org/dspace/rest/RestIndex.java b/dspace-rest/src/main/java/org/dspace/rest/RestIndex.java index dfb5e2bb39..c09e924536 100644 --- a/dspace-rest/src/main/java/org/dspace/rest/RestIndex.java +++ b/dspace-rest/src/main/java/org/dspace/rest/RestIndex.java @@ -23,7 +23,7 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authenticate.AuthenticationMethod; import org.dspace.authenticate.ShibAuthentication; import org.dspace.authenticate.factory.AuthenticateServiceFactory; @@ -44,7 +44,7 @@ import org.dspace.utils.DSpace; @Path("/") public class RestIndex { protected EPersonService epersonService = EPersonServiceFactory.getInstance().getEPersonService(); - private static Logger log = Logger.getLogger(RestIndex.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(RestIndex.class); /** * Return html page with information about REST api. It contains methods all diff --git a/dspace-rest/src/main/java/org/dspace/rest/RestReports.java b/dspace-rest/src/main/java/org/dspace/rest/RestReports.java index dda44b5868..4af556b6f8 100644 --- a/dspace-rest/src/main/java/org/dspace/rest/RestReports.java +++ b/dspace-rest/src/main/java/org/dspace/rest/RestReports.java @@ -20,7 +20,7 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import javax.ws.rs.core.UriInfo; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.rest.common.Report; import org.dspace.services.ConfigurationService; import org.dspace.services.factory.DSpaceServicesFactory; @@ -34,7 +34,7 @@ import org.dspace.services.factory.DSpaceServicesFactory; */ @Path("/reports") public class RestReports { - private static Logger log = Logger.getLogger(RestReports.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(RestReports.class); protected ConfigurationService configurationService = DSpaceServicesFactory.getInstance().getConfigurationService(); public static final String REST_RPT_URL = "rest.report-url."; diff --git a/dspace-rest/src/main/java/org/dspace/rest/authentication/DSpaceAuthenticationProvider.java b/dspace-rest/src/main/java/org/dspace/rest/authentication/DSpaceAuthenticationProvider.java index 65bedce85b..5d0bedb442 100644 --- a/dspace-rest/src/main/java/org/dspace/rest/authentication/DSpaceAuthenticationProvider.java +++ b/dspace-rest/src/main/java/org/dspace/rest/authentication/DSpaceAuthenticationProvider.java @@ -13,7 +13,7 @@ import java.util.List; import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authenticate.AuthenticationMethod; import org.dspace.authenticate.factory.AuthenticateServiceFactory; import org.dspace.authenticate.service.AuthenticationService; @@ -40,7 +40,7 @@ import org.springframework.security.core.authority.SimpleGrantedAuthority; */ public class DSpaceAuthenticationProvider implements AuthenticationProvider { - private static Logger log = Logger.getLogger(DSpaceAuthenticationProvider.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(DSpaceAuthenticationProvider.class); protected AuthenticationService authenticationService = AuthenticateServiceFactory.getInstance() .getAuthenticationService(); diff --git a/dspace-rest/src/main/java/org/dspace/rest/common/Bitstream.java b/dspace-rest/src/main/java/org/dspace/rest/common/Bitstream.java index ecfc31ef26..7eb198990e 100644 --- a/dspace-rest/src/main/java/org/dspace/rest/common/Bitstream.java +++ b/dspace-rest/src/main/java/org/dspace/rest/common/Bitstream.java @@ -14,7 +14,7 @@ import java.util.List; import javax.servlet.ServletContext; import javax.xml.bind.annotation.XmlRootElement; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.Bundle; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.BitstreamService; @@ -35,7 +35,7 @@ public class Bitstream extends DSpaceObject { protected BitstreamService bitstreamService = ContentServiceFactory.getInstance().getBitstreamService(); protected BundleService bundleService = ContentServiceFactory.getInstance().getBundleService(); - Logger log = Logger.getLogger(Bitstream.class); + Logger log = org.apache.logging.log4j.LogManager.getLogger(Bitstream.class); private String bundleName; private String description; diff --git a/dspace-rest/src/main/java/org/dspace/rest/common/Collection.java b/dspace-rest/src/main/java/org/dspace/rest/common/Collection.java index 9bb66dba20..5c2c9b817b 100644 --- a/dspace-rest/src/main/java/org/dspace/rest/common/Collection.java +++ b/dspace-rest/src/main/java/org/dspace/rest/common/Collection.java @@ -16,7 +16,7 @@ import javax.servlet.ServletContext; import javax.ws.rs.WebApplicationException; import javax.xml.bind.annotation.XmlRootElement; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.CollectionService; import org.dspace.content.service.CommunityService; @@ -36,7 +36,7 @@ public class Collection extends DSpaceObject { protected CollectionService collectionService = ContentServiceFactory.getInstance().getCollectionService(); protected ItemService itemService = ContentServiceFactory.getInstance().getItemService(); - Logger log = Logger.getLogger(Collection.class); + Logger log = org.apache.logging.log4j.LogManager.getLogger(Collection.class); //Relationships private Bitstream logo; diff --git a/dspace-rest/src/main/java/org/dspace/rest/common/Community.java b/dspace-rest/src/main/java/org/dspace/rest/common/Community.java index 45d62ffe96..4f69eba0aa 100644 --- a/dspace-rest/src/main/java/org/dspace/rest/common/Community.java +++ b/dspace-rest/src/main/java/org/dspace/rest/common/Community.java @@ -16,7 +16,7 @@ import javax.ws.rs.WebApplicationException; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.factory.AuthorizeServiceFactory; import org.dspace.authorize.service.AuthorizeService; import org.dspace.content.factory.ContentServiceFactory; @@ -37,7 +37,7 @@ public class Community extends DSpaceObject { protected ItemService itemService = ContentServiceFactory.getInstance().getItemService(); protected AuthorizeService authorizeService = AuthorizeServiceFactory.getInstance().getAuthorizeService(); - private static Logger log = Logger.getLogger(Community.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(Community.class); //Exandable relationships private Bitstream logo; diff --git a/dspace-rest/src/main/java/org/dspace/rest/common/FilteredCollection.java b/dspace-rest/src/main/java/org/dspace/rest/common/FilteredCollection.java index 525b823301..c7ff0ef9b3 100644 --- a/dspace-rest/src/main/java/org/dspace/rest/common/FilteredCollection.java +++ b/dspace-rest/src/main/java/org/dspace/rest/common/FilteredCollection.java @@ -16,7 +16,7 @@ import javax.servlet.ServletContext; import javax.ws.rs.WebApplicationException; import javax.xml.bind.annotation.XmlRootElement; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.CollectionService; import org.dspace.content.service.CommunityService; @@ -34,7 +34,7 @@ public class FilteredCollection extends DSpaceObject { protected CommunityService communityService = ContentServiceFactory.getInstance().getCommunityService(); protected CollectionService collectionService = ContentServiceFactory.getInstance().getCollectionService(); protected ItemService itemService = ContentServiceFactory.getInstance().getItemService(); - Logger log = Logger.getLogger(FilteredCollection.class); + Logger log = org.apache.logging.log4j.LogManager.getLogger(FilteredCollection.class); //Relationships private Community parentCommunity; diff --git a/dspace-rest/src/main/java/org/dspace/rest/common/Item.java b/dspace-rest/src/main/java/org/dspace/rest/common/Item.java index e336247736..3794153b7d 100644 --- a/dspace-rest/src/main/java/org/dspace/rest/common/Item.java +++ b/dspace-rest/src/main/java/org/dspace/rest/common/Item.java @@ -16,7 +16,7 @@ import javax.ws.rs.WebApplicationException; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.app.util.factory.UtilServiceFactory; import org.dspace.app.util.service.MetadataExposureService; import org.dspace.authorize.factory.AuthorizeServiceFactory; @@ -43,7 +43,7 @@ public class Item extends DSpaceObject { .getMetadataExposureService(); protected AuthorizeService authorizeService = AuthorizeServiceFactory.getInstance().getAuthorizeService(); - Logger log = Logger.getLogger(Item.class); + Logger log = org.apache.logging.log4j.LogManager.getLogger(Item.class); String isArchived; String isWithdrawn; diff --git a/dspace-rest/src/main/java/org/dspace/rest/common/ItemFilter.java b/dspace-rest/src/main/java/org/dspace/rest/common/ItemFilter.java index 6a1466eb35..bc5bd13134 100644 --- a/dspace-rest/src/main/java/org/dspace/rest/common/ItemFilter.java +++ b/dspace-rest/src/main/java/org/dspace/rest/common/ItemFilter.java @@ -17,7 +17,7 @@ import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.core.Context; import org.dspace.core.factory.CoreServiceFactory; import org.dspace.rest.filter.ItemFilterDefs; @@ -32,7 +32,7 @@ import org.dspace.rest.filter.ItemFilterTest; */ @XmlRootElement(name = "item-filter") public class ItemFilter { - static Logger log = Logger.getLogger(ItemFilter.class); + static Logger log = org.apache.logging.log4j.LogManager.getLogger(ItemFilter.class); private ItemFilterTest itemFilterTest = null; private String filterName = ""; diff --git a/dspace-rest/src/main/java/org/dspace/rest/common/ItemFilterQuery.java b/dspace-rest/src/main/java/org/dspace/rest/common/ItemFilterQuery.java index 448d3a8cfc..6f56e2b44c 100644 --- a/dspace-rest/src/main/java/org/dspace/rest/common/ItemFilterQuery.java +++ b/dspace-rest/src/main/java/org/dspace/rest/common/ItemFilterQuery.java @@ -11,7 +11,7 @@ import javax.ws.rs.WebApplicationException; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlRootElement; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; /** * Metadata Query for DSpace Items using the REST API @@ -20,7 +20,7 @@ import org.apache.log4j.Logger; */ @XmlRootElement(name = "item-filter-query") public class ItemFilterQuery { - Logger log = Logger.getLogger(ItemFilterQuery.class); + Logger log = org.apache.logging.log4j.LogManager.getLogger(ItemFilterQuery.class); private String field = ""; private String operation = ""; diff --git a/dspace-rest/src/main/java/org/dspace/rest/filter/ItemFilterDefsMeta.java b/dspace-rest/src/main/java/org/dspace/rest/filter/ItemFilterDefsMeta.java index 278c0c8a1e..96a866357d 100644 --- a/dspace-rest/src/main/java/org/dspace/rest/filter/ItemFilterDefsMeta.java +++ b/dspace-rest/src/main/java/org/dspace/rest/filter/ItemFilterDefsMeta.java @@ -9,7 +9,7 @@ package org.dspace.rest.filter; import java.util.regex.Pattern; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.Item; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.ItemService; @@ -24,7 +24,7 @@ import org.dspace.services.factory.DSpaceServicesFactory; public class ItemFilterDefsMeta implements ItemFilterList { protected static ItemService itemService = ContentServiceFactory.getInstance().getItemService(); - static Logger log = Logger.getLogger(ItemFilterDefsMeta.class); + static Logger log = org.apache.logging.log4j.LogManager.getLogger(ItemFilterDefsMeta.class); public static final String CAT_META_GEN = "General Metadata Filters"; public static final String CAT_META_SPEC = "Specific Metadata Filters"; diff --git a/dspace-rest/src/main/java/org/dspace/rest/filter/ItemFilterDefsPerm.java b/dspace-rest/src/main/java/org/dspace/rest/filter/ItemFilterDefsPerm.java index daa5d022b2..9e80f31196 100644 --- a/dspace-rest/src/main/java/org/dspace/rest/filter/ItemFilterDefsPerm.java +++ b/dspace-rest/src/main/java/org/dspace/rest/filter/ItemFilterDefsPerm.java @@ -9,7 +9,7 @@ package org.dspace.rest.filter; import java.sql.SQLException; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.factory.AuthorizeServiceFactory; import org.dspace.authorize.service.AuthorizeService; import org.dspace.content.Bitstream; @@ -26,7 +26,7 @@ import org.dspace.rest.filter.ItemFilterUtil.BundleName; public class ItemFilterDefsPerm implements ItemFilterList { protected static AuthorizeService authorizeService = AuthorizeServiceFactory.getInstance().getAuthorizeService(); public static final String CAT_PERM = "Perimission Filters"; - private static Logger log = Logger.getLogger(ItemFilterDefsPerm.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(ItemFilterDefsPerm.class); public ItemFilterDefsPerm() { } diff --git a/dspace-rest/src/main/java/org/dspace/rest/filter/ItemFilterSet.java b/dspace-rest/src/main/java/org/dspace/rest/filter/ItemFilterSet.java index 837ed4ee4b..f70bc9664d 100644 --- a/dspace-rest/src/main/java/org/dspace/rest/filter/ItemFilterSet.java +++ b/dspace-rest/src/main/java/org/dspace/rest/filter/ItemFilterSet.java @@ -14,7 +14,7 @@ import java.util.List; import javax.servlet.ServletContext; import javax.ws.rs.WebApplicationException; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.factory.AuthorizeServiceFactory; import org.dspace.authorize.service.AuthorizeService; import org.dspace.core.Context; @@ -28,7 +28,7 @@ import org.dspace.rest.common.ItemFilter; */ public class ItemFilterSet { protected AuthorizeService authorizeService = AuthorizeServiceFactory.getInstance().getAuthorizeService(); - static Logger log = Logger.getLogger(ItemFilterSet.class); + static Logger log = org.apache.logging.log4j.LogManager.getLogger(ItemFilterSet.class); private List itemFilters; private ItemFilter allFiltersFilter; diff --git a/dspace-rest/src/main/java/org/dspace/rest/filter/ItemFilterUtil.java b/dspace-rest/src/main/java/org/dspace/rest/filter/ItemFilterUtil.java index d6d68ba6a7..ddb75f0db8 100644 --- a/dspace-rest/src/main/java/org/dspace/rest/filter/ItemFilterUtil.java +++ b/dspace-rest/src/main/java/org/dspace/rest/filter/ItemFilterUtil.java @@ -13,7 +13,7 @@ import java.util.List; import java.util.regex.Pattern; import com.ibm.icu.util.Calendar; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.Bitstream; import org.dspace.content.Bundle; import org.dspace.content.Item; @@ -25,7 +25,7 @@ import org.dspace.services.factory.DSpaceServicesFactory; public class ItemFilterUtil { protected static ItemService itemService = ContentServiceFactory.getInstance().getItemService(); - static Logger log = Logger.getLogger(ItemFilterUtil.class); + static Logger log = org.apache.logging.log4j.LogManager.getLogger(ItemFilterUtil.class); public enum BundleName { ORIGINAL, TEXT, LICENSE, THUMBNAIL } diff --git a/dspace-rest/src/main/webapp/WEB-INF/web.xml b/dspace-rest/src/main/webapp/WEB-INF/web.xml index 90d68ac6a2..1b33aac885 100644 --- a/dspace-rest/src/main/webapp/WEB-INF/web.xml +++ b/dspace-rest/src/main/webapp/WEB-INF/web.xml @@ -8,10 +8,9 @@ http://www.dspace.org/license/ --> - + dspace.request @@ -77,6 +76,14 @@ ${dspace.dir} + + + The location of the Log4J configuration + + log4jConfiguration + ${dspace.dir}/config/log4j2.xml + + contextConfigLocation @@ -109,4 +116,4 @@ - \ No newline at end of file + diff --git a/dspace-services/pom.xml b/dspace-services/pom.xml index 3d82e158fd..e402bed92b 100644 --- a/dspace-services/pom.xml +++ b/dspace-services/pom.xml @@ -95,8 +95,8 @@ compile - commons-lang - commons-lang + org.apache.commons + commons-lang3 @@ -108,7 +108,7 @@ javax.servlet - servlet-api + javax.servlet-api provided @@ -140,13 +140,20 @@ test - org.slf4j - slf4j-log4j12 + org.apache.logging.log4j + log4j-api + ${log4j.version} - log4j - log4j + org.apache.logging.log4j + log4j-core + ${log4j.version} + + org.apache.logging.log4j + log4j-slf4j-impl + ${log4j.version} + commons-logging @@ -159,8 +166,8 @@ commons-collections4 - commons-configuration - commons-configuration + org.apache.commons + commons-configuration2 diff --git a/dspace-services/src/main/java/org/dspace/kernel/DSpaceKernelManager.java b/dspace-services/src/main/java/org/dspace/kernel/DSpaceKernelManager.java index 00a938a27d..1f86c16b29 100644 --- a/dspace-services/src/main/java/org/dspace/kernel/DSpaceKernelManager.java +++ b/dspace-services/src/main/java/org/dspace/kernel/DSpaceKernelManager.java @@ -21,7 +21,7 @@ import javax.management.NotCompliantMBeanException; import javax.management.ObjectName; import javax.management.ReflectionException; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/dspace-services/src/main/java/org/dspace/servicemanager/DSpaceServiceManager.java b/dspace-services/src/main/java/org/dspace/servicemanager/DSpaceServiceManager.java index 143f918bcb..a4520de0df 100644 --- a/dspace-services/src/main/java/org/dspace/servicemanager/DSpaceServiceManager.java +++ b/dspace-services/src/main/java/org/dspace/servicemanager/DSpaceServiceManager.java @@ -16,7 +16,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; -import org.apache.commons.lang.ArrayUtils; +import org.apache.commons.lang3.ArrayUtils; import org.dspace.kernel.Activator; import org.dspace.kernel.mixins.ConfigChangeListener; import org.dspace.kernel.mixins.InitializedService; diff --git a/dspace-services/src/main/java/org/dspace/servicemanager/config/DSpaceConfigurationFactoryBean.java b/dspace-services/src/main/java/org/dspace/servicemanager/config/DSpaceConfigurationFactoryBean.java deleted file mode 100644 index bbb57932fd..0000000000 --- a/dspace-services/src/main/java/org/dspace/servicemanager/config/DSpaceConfigurationFactoryBean.java +++ /dev/null @@ -1,197 +0,0 @@ -/** - * The contents of this file are subject to the license and copyright - * detailed in the LICENSE and NOTICE files at the root of the source - * tree and available online at - * - * http://www.dspace.org/license/ - */ - -/** - * This based heavily on the CommonsConfigurationFactoryBean available in - * 'spring-modules-jakarta-commons' version 0.8: - * https://java.net/projects/springmodules/sources/svn/content/tags/release-0_8/projects/commons/src/java/org - * /springmodules/commons/configuration/CommonsConfigurationFactoryBean.java?rev=2110 - *

- * As this module is no longer maintained by Spring, it is now recommended to - * maintain it within your own codebase, so that minor updates can be made to - * support new versions of Apache Commons Configuration (as needed). See this - * Spring ticket: https://jira.spring.io/browse/SPR-10213 - *

- * For DSpace, we've specifically updated this bean to automatically load all - * configurations from the DSpaceConfigurationService (which uses Commons - * Configuration internally). See constructor below. - *

- * This bean is loaded in 'spring-dspace-core-services.xml' where it is wired - * up to PropertyPlaceholderConfigurer. - */ -package org.dspace.servicemanager.config; - -import java.net.URL; - -import org.apache.commons.configuration.CompositeConfiguration; -import org.apache.commons.configuration.Configuration; -import org.apache.commons.configuration.ConfigurationConverter; -import org.apache.commons.configuration.PropertiesConfiguration; -import org.dspace.services.ConfigurationService; -import org.springframework.beans.factory.FactoryBean; -import org.springframework.beans.factory.InitializingBean; -import org.springframework.core.io.Resource; -import org.springframework.util.Assert; - -/** - * FactoryBean which wraps a Commons CompositeConfiguration object for usage - * with PropertiesLoaderSupport. This allows the configuration object to behave - * like a normal java.util.Properties object which can be passed on to - * setProperties() method allowing PropertyOverrideConfigurer and - * PropertyPlaceholderConfigurer to take advantage of Commons Configuration.
- * Internally a CompositeConfiguration object is used for merging multiple - * Configuration objects. - * - * @see java.util.Properties - * @see org.springframework.core.io.support.PropertiesLoaderSupport - * - * @author Costin Leau - * - */ -public class DSpaceConfigurationFactoryBean implements InitializingBean, FactoryBean { - - private CompositeConfiguration configuration; - - private Configuration[] configurations; - - private Resource[] locations; - - private boolean throwExceptionOnMissing = true; - - /** - * Initialize all properties via the passed in DSpace ConfigurationService - * @param configurationService current DSpace configuration service - */ - public DSpaceConfigurationFactoryBean(ConfigurationService configurationService) { - Assert.notNull(configurationService.getConfiguration()); - this.configuration = new CompositeConfiguration(configurationService.getConfiguration()); - } - - /** - * Initialize all properties via the passed in Commons Configuration - * @param configuration Commons configuration - */ - public DSpaceConfigurationFactoryBean(Configuration configuration) { - Assert.notNull(configuration); - this.configuration = new CompositeConfiguration(configuration); - } - - /** - * @see org.springframework.beans.factory.FactoryBean#getObject() - */ - @Override - public Object getObject() throws Exception { - return (configuration != null) ? ConfigurationConverter.getProperties(configuration) : null; - } - - /** - * @see org.springframework.beans.factory.FactoryBean#getObjectType() - */ - @Override - public Class getObjectType() { - return java.util.Properties.class; - } - - /** - * @see org.springframework.beans.factory.FactoryBean#isSingleton() - */ - @Override - public boolean isSingleton() { - return true; - } - - /** - * @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet() - */ - public void afterPropertiesSet() throws Exception { - if (configuration == null && (configurations == null || configurations.length == 0) - && (locations == null || locations.length == 0)) { - throw new IllegalArgumentException("no configuration object or location specified"); - } - - if (configuration == null) { - configuration = new CompositeConfiguration(); - } - - configuration.setThrowExceptionOnMissing(throwExceptionOnMissing); - - if (configurations != null) { - for (int i = 0; i < configurations.length; i++) { - configuration.addConfiguration(configurations[i]); - } - } - - if (locations != null) { - for (int i = 0; i < locations.length; i++) { - URL url = locations[i].getURL(); - Configuration props = new PropertiesConfiguration(url); - configuration.addConfiguration(props); - } - } - } - - /** - * @return Returns the configurations. - */ - public Configuration[] getConfigurations() { - return configurations; - } - - /** - * Set the commons configurations objects which will be used as properties. - * - * @param configurations array of Commons Configuration objects - */ - public void setConfigurations(Configuration[] configurations) { - this.configurations = configurations; - } - - public Resource[] getLocations() { - return locations; - } - - /** - * Shortcut for loading configuration from Spring resources. It will - * internally create a PropertiesConfiguration object based on the URL - * retrieved from the given Resources. - * - * @param locations array of resource locations - */ - public void setLocations(Resource[] locations) { - this.locations = locations; - } - - /** - * Return whether to throw an exception if a configuration is missing. - * @return true if exception should be throw, false otherwise. - */ - public boolean isThrowExceptionOnMissing() { - return throwExceptionOnMissing; - } - - /** - * Set the underlying Commons CompositeConfiguration throwExceptionOnMissing - * flag. - * @see org.apache.commons.configuration.AbstractConfiguration - * @param throwExceptionOnMissing whether to throw an exception if a config is missing - */ - public void setThrowExceptionOnMissing(boolean throwExceptionOnMissing) { - this.throwExceptionOnMissing = throwExceptionOnMissing; - } - - /** - * Getter for the underlying CompositeConfiguration object. - * - * @return CompositeConfiguration object - */ - public CompositeConfiguration getConfiguration() { - return configuration; - } - -} - diff --git a/dspace-services/src/main/java/org/dspace/servicemanager/config/DSpaceConfigurationPlaceholderConfigurer.java b/dspace-services/src/main/java/org/dspace/servicemanager/config/DSpaceConfigurationPlaceholderConfigurer.java new file mode 100644 index 0000000000..b85450dcd0 --- /dev/null +++ b/dspace-services/src/main/java/org/dspace/servicemanager/config/DSpaceConfigurationPlaceholderConfigurer.java @@ -0,0 +1,36 @@ +/** + * The contents of this file are subject to the license and copyright + * detailed in the LICENSE and NOTICE files at the root of the source + * tree and available online at + * + * http://www.dspace.org/license/ + */ +package org.dspace.servicemanager.config; + +import org.apache.commons.configuration2.Configuration; +import org.apache.commons.configuration2.spring.ConfigurationPropertySource; +import org.springframework.context.support.PropertySourcesPlaceholderConfigurer; +import org.springframework.core.env.MutablePropertySources; + +/** + * Extends Spring PropertySourcesPlaceholderConfigurer to allow our Configuration to be included as a Spring + * PropertySource. This allows ${...} placeholders within bean definition property values and @Value annotations + * to be resolved using DSpaceConfigurationService + *

+ * See: https://stackoverflow.com/a/36718301/3750035 + *

+ * NOTE: This is initialized in spring-dspace-core-services.xml + * + * @see PropertySourcesPlaceholderConfigurer + * @see DSpaceConfigurationService + */ +public class DSpaceConfigurationPlaceholderConfigurer extends PropertySourcesPlaceholderConfigurer { + + public DSpaceConfigurationPlaceholderConfigurer(Configuration configuration) { + ConfigurationPropertySource apacheCommonsConfigPropertySource = + new ConfigurationPropertySource(configuration.getClass().getName(), configuration); + MutablePropertySources propertySources = new MutablePropertySources(); + propertySources.addLast(apacheCommonsConfigPropertySource); + setPropertySources(propertySources); + } +} diff --git a/dspace-services/src/main/java/org/dspace/servicemanager/config/DSpaceConfigurationService.java b/dspace-services/src/main/java/org/dspace/servicemanager/config/DSpaceConfigurationService.java index 83238a9667..3d511a1e67 100644 --- a/dspace-services/src/main/java/org/dspace/servicemanager/config/DSpaceConfigurationService.java +++ b/dspace-services/src/main/java/org/dspace/servicemanager/config/DSpaceConfigurationService.java @@ -22,10 +22,14 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Properties; -import org.apache.commons.configuration.Configuration; -import org.apache.commons.configuration.ConfigurationConverter; -import org.apache.commons.configuration.ConfigurationException; -import org.apache.commons.configuration.DefaultConfigurationBuilder; +import org.apache.commons.configuration2.Configuration; +import org.apache.commons.configuration2.ConfigurationConverter; +import org.apache.commons.configuration2.builder.ConfigurationBuilderEvent; +import org.apache.commons.configuration2.builder.combined.ReloadingCombinedConfigurationBuilder; +import org.apache.commons.configuration2.builder.fluent.Parameters; +import org.apache.commons.configuration2.convert.DefaultListDelimiterHandler; +import org.apache.commons.configuration2.event.Event; +import org.apache.commons.configuration2.ex.ConfigurationException; import org.dspace.services.ConfigurationService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -60,15 +64,19 @@ public final class DSpaceConfigurationService implements ConfigurationService { // The DSpace Server ID configuration public static final String DSPACE_SERVER_ID = "serverId"; - // Current ConfigurationBuilder - private DefaultConfigurationBuilder configurationBuilder = null; + // Configuration list delimiter. Configurations with this character will be split into arrays + public static final char CONFIG_LIST_DELIMITER = ','; - // Current Configuration - private Configuration configuration = null; + // Current ConfigurationBuilder + // NOTE: we only cache the "builder", as it controls when a configuration is automatically reloaded + private ReloadingCombinedConfigurationBuilder configurationBuilder = null; // Current Home directory private String homePath = null; + // Current Configuration Definition File + private String configDefinition = null; + /** * Initializes a ConfigurationService based on default values. The DSpace * Home directory is determined based on system properties / searching. @@ -98,7 +106,7 @@ public final class DSpaceConfigurationService implements ConfigurationService { @Override public Properties getProperties() { // Return our configuration as a set of Properties - return ConfigurationConverter.getProperties(configuration); + return ConfigurationConverter.getProperties(getConfiguration()); } /** @@ -109,7 +117,7 @@ public final class DSpaceConfigurationService implements ConfigurationService { @Override public List getPropertyKeys() { - Iterator keys = configuration.getKeys(); + Iterator keys = getConfiguration().getKeys(); List keyList = new ArrayList<>(); while (keys.hasNext()) { @@ -126,7 +134,7 @@ public final class DSpaceConfigurationService implements ConfigurationService { @Override public List getPropertyKeys(String prefix) { - Iterator keys = configuration.getKeys(prefix); + Iterator keys = getConfiguration().getKeys(prefix); List keyList = new ArrayList<>(); while (keys.hasNext()) { @@ -142,7 +150,13 @@ public final class DSpaceConfigurationService implements ConfigurationService { */ @Override public Configuration getConfiguration() { - return configuration; + try { + return this.configurationBuilder.getConfiguration(); + } catch (ConfigurationException ce) { + log.error("Unable to get configuration object based on definition at " + this.configDefinition); + System.err.println("Unable to get configuration object based on definition at " + this.configDefinition); + throw new RuntimeException(ce); + } } /** @@ -153,7 +167,7 @@ public final class DSpaceConfigurationService implements ConfigurationService { */ @Override public Object getPropertyValue(String name) { - return configuration.getProperty(name); + return getConfiguration().getProperty(name); } /** @@ -175,7 +189,7 @@ public final class DSpaceConfigurationService implements ConfigurationService { */ @Override public String getProperty(String name, String defaultValue) { - return (String) getPropertyAsType(name, defaultValue); + return getPropertyAsType(name, defaultValue); } /** @@ -325,7 +339,7 @@ public final class DSpaceConfigurationService implements ConfigurationService { */ @Override public boolean hasProperty(String name) { - if (configuration.containsKey(name)) { + if (getConfiguration().containsKey(name)) { return true; } else { return false; @@ -346,15 +360,15 @@ public final class DSpaceConfigurationService implements ConfigurationService { if (name == null) { throw new IllegalArgumentException("name cannot be null for setting configuration"); } else { - Object oldValue = configuration.getProperty(name); + Object oldValue = getConfiguration().getProperty(name); if (value == null && oldValue != null) { changed = true; - configuration.clearProperty(name); + getConfiguration().clearProperty(name); log.info("Cleared the configuration setting for name (" + name + ")"); } else if (value != null && !value.equals(oldValue)) { changed = true; - configuration.setProperty(name, value); + getConfiguration().setProperty(name, value); } } return changed; @@ -409,14 +423,14 @@ public final class DSpaceConfigurationService implements ConfigurationService { } // Check if the value has changed - if (this.configuration.containsKey(key) && - this.configuration.getProperty(key).equals(value)) { + if (getConfiguration().containsKey(key) && + getConfiguration().getProperty(key).equals(value)) { // no change to the value return false; } else { // Either this config doesn't exist, or it is not the same value, // so we'll update it. - this.configuration.setProperty(key, value); + getConfiguration().setProperty(key, value); return true; } } @@ -425,7 +439,7 @@ public final class DSpaceConfigurationService implements ConfigurationService { * Clears all the configuration settings. */ public void clear() { - this.configuration.clear(); + getConfiguration().clear(); log.info("Cleared all configuration settings"); } @@ -435,7 +449,7 @@ public final class DSpaceConfigurationService implements ConfigurationService { * @param key key of the configuration */ public void clearConfig(String key) { - this.configuration.clearProperty(key); + getConfiguration().clearProperty(key); } // loading from files code @@ -451,35 +465,50 @@ public final class DSpaceConfigurationService implements ConfigurationService { */ private void loadInitialConfig(String providedHome) { // Determine the DSpace home directory - homePath = getDSpaceHome(providedHome); + this.homePath = getDSpaceHome(providedHome); // Based on homePath get full path to the configuration definition - String configDefinition = homePath + File.separatorChar + DSPACE_CONFIG_DEFINITION_PATH; + this.configDefinition = this.homePath + File.separatorChar + DSPACE_CONFIG_DEFINITION_PATH; // Check if our configuration definition exists in the homePath - File configDefFile = new File(configDefinition); + File configDefFile = new File(this.configDefinition); if (!configDefFile.exists()) { try { //If it doesn't exist, check for a configuration definition on Classpath // (NOTE: This is mostly for Unit Testing to find the test config-definition.xml) ClassPathResource resource = new ClassPathResource(DSPACE_CONFIG_DEFINITION_PATH); - configDefinition = resource.getFile().getAbsolutePath(); + this.configDefinition = resource.getFile().getAbsolutePath(); } catch (IOException ioe) { log.error("Error attempting to load configuration definition from classpath", ioe); } } try { + Parameters params = new Parameters(); + // Treat comma as a config list delimiter (when not escaped by \,) + DefaultListDelimiterHandler listDelimiterHandler = new DefaultListDelimiterHandler(CONFIG_LIST_DELIMITER); // Load our configuration definition, which in turn loads all our config files/settings - // See: http://commons.apache.org/proper/commons-configuration/userguide_v1.10/howto_configurationbuilder - // .html - configurationBuilder = new DefaultConfigurationBuilder(configDefinition); + // See: http://commons.apache.org/proper/commons-configuration/userguide/howto_combinedbuilder.html + this.configurationBuilder = new ReloadingCombinedConfigurationBuilder() + .configure(params.fileBased() + .setFile(new File(this.configDefinition)) + .setListDelimiterHandler(listDelimiterHandler)); - // Actually parser our configuration definition & return the resulting Configuration - configuration = configurationBuilder.getConfiguration(); + // Parse our configuration definition and initialize resulting Configuration + this.configurationBuilder.getConfiguration(); + + // Register an event listener for triggering automatic reloading checks + // See: https://commons.apache.org/proper/commons-configuration/userguide/howto_reloading.html#Reloading_Checks_on_Builder_Access + // NOTE: This MUST be added *after* the first call to getConfiguration(), as getReloadingController() is + // not initialized until the configuration is first parsed/read. + this.configurationBuilder.addEventListener(ConfigurationBuilderEvent.CONFIGURATION_REQUEST, + // Lamba which checks reloadable configurations for any updates. + // Auto-reloadable configs are ONLY those flagged config-reload="true" in the configuration definition + (Event e) -> this.configurationBuilder.getReloadingController() + .checkForReloading(null)); } catch (ConfigurationException ce) { - log.error("Unable to load configurations based on definition at " + configDefinition); - System.err.println("Unable to load configurations based on definition at " + configDefinition); + log.error("Unable to load configurations based on definition at " + this.configDefinition); + System.err.println("Unable to load configurations based on definition at " + this.configDefinition); throw new RuntimeException(ce); } @@ -490,22 +519,25 @@ public final class DSpaceConfigurationService implements ConfigurationService { } /** - * Reload the configuration from the DSpace configuration files. + * Reload all configurations from the DSpace configuration definition. *

- * Uses the initialized ConfigurationBuilder to reload all configurations. + * This method invalidates the current Configuration object, and uses + * the initialized ConfigurationBuilder to reload all configurations. */ @Override public synchronized void reloadConfig() { try { - configurationBuilder.reload(); - this.configuration = configurationBuilder.getConfiguration(); + // As this is a forced reload, completely invalidate the configuration + // This ensures all configs, including System properties and Environment variables are reloaded + this.configurationBuilder.getConfiguration().invalidate(); + + // Reload/reinitialize our configuration + this.configurationBuilder.getConfiguration(); // Finally, (re)set any dynamic, default properties setDynamicProperties(); } catch (ConfigurationException ce) { - log.error("Unable to reload configurations based on definition at " + - configurationBuilder.getFile().getAbsolutePath(), - ce); + log.error("Unable to reload configurations based on definition at " + this.configDefinition, ce); } log.info("Reloaded configuration service: " + toString()); } @@ -516,7 +548,7 @@ public final class DSpaceConfigurationService implements ConfigurationService { */ private void setDynamicProperties() { // Ensure our DSPACE_HOME property is set to the determined homePath - setProperty(DSPACE_HOME, homePath); + setProperty(DSPACE_HOME, this.homePath); try { // Attempt to set a default "serverId" property to value of hostname @@ -534,8 +566,8 @@ public final class DSpaceConfigurationService implements ConfigurationService { int size = props != null ? props.size() : 0; // Return the configuration directory and number of configs loaded - return "ConfigDir=" + configuration - .getString(DSPACE_HOME) + File.separatorChar + DEFAULT_CONFIG_DIR + ", Size=" + size; + return "ConfigDir=" + getConfiguration().getString(DSPACE_HOME) + File.separatorChar + + DEFAULT_CONFIG_DIR + ", Size=" + size; } /** @@ -652,10 +684,11 @@ public final class DSpaceConfigurationService implements ConfigurationService { * @param object type * @return converted value */ + @SuppressWarnings("unchecked") private T convert(String name, Class type) { // If this key doesn't exist, just return null - if (!configuration.containsKey(name)) { + if (!getConfiguration().containsKey(name)) { // Special case. For booleans, return false if key doesn't exist if (Boolean.class.equals(type) || boolean.class.equals(type)) { return (T) Boolean.FALSE; @@ -667,33 +700,33 @@ public final class DSpaceConfigurationService implements ConfigurationService { // Based on the type of class, call the appropriate // method of the Configuration object if (type.isArray()) { - return (T) configuration.getStringArray(name); + return (T) getConfiguration().getStringArray(name); } else if (String.class.equals(type) || type.isAssignableFrom(String.class)) { - return (T) configuration.getString(name); + return (T) getConfiguration().getString(name); } else if (BigDecimal.class.equals(type)) { - return (T) configuration.getBigDecimal(name); + return (T) getConfiguration().getBigDecimal(name); } else if (BigInteger.class.equals(type)) { - return (T) configuration.getBigInteger(name); + return (T) getConfiguration().getBigInteger(name); } else if (Boolean.class.equals(type) || boolean.class.equals(type)) { - return (T) Boolean.valueOf(configuration.getBoolean(name)); + return (T) Boolean.valueOf(getConfiguration().getBoolean(name)); } else if (Byte.class.equals(type) || byte.class.equals(type)) { - return (T) Byte.valueOf(configuration.getByte(name)); + return (T) Byte.valueOf(getConfiguration().getByte(name)); } else if (Double.class.equals(type) || double.class.equals(type)) { - return (T) Double.valueOf(configuration.getDouble(name)); + return (T) Double.valueOf(getConfiguration().getDouble(name)); } else if (Float.class.equals(type) || float.class.equals(type)) { - return (T) Float.valueOf(configuration.getFloat(name)); + return (T) Float.valueOf(getConfiguration().getFloat(name)); } else if (Integer.class.equals(type) || int.class.equals(type)) { - return (T) Integer.valueOf(configuration.getInt(name)); + return (T) Integer.valueOf(getConfiguration().getInt(name)); } else if (List.class.equals(type)) { - return (T) configuration.getList(name); + return (T) getConfiguration().getList(name); } else if (Long.class.equals(type) || long.class.equals(type)) { - return (T) Long.valueOf(configuration.getLong(name)); + return (T) Long.valueOf(getConfiguration().getLong(name)); } else if (Short.class.equals(type) || short.class.equals(type)) { - return (T) Short.valueOf(configuration.getShort(name)); + return (T) Short.valueOf(getConfiguration().getShort(name)); } else { // If none of the above works, try to convert the value to the required type SimpleTypeConverter converter = new SimpleTypeConverter(); - return (T) converter.convertIfNecessary(configuration.getProperty(name), type); + return (T) converter.convertIfNecessary(getConfiguration().getProperty(name), type); } } } diff --git a/dspace-services/src/main/java/org/dspace/servicemanager/example/EventListenerExample.java b/dspace-services/src/main/java/org/dspace/servicemanager/example/EventListenerExample.java index 0deaba1ac5..ab2afb5ed6 100644 --- a/dspace-services/src/main/java/org/dspace/servicemanager/example/EventListenerExample.java +++ b/dspace-services/src/main/java/org/dspace/servicemanager/example/EventListenerExample.java @@ -7,7 +7,8 @@ */ package org.dspace.servicemanager.example; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.dspace.services.model.Event; import org.dspace.services.model.EventListener; @@ -23,8 +24,7 @@ public final class EventListenerExample implements EventListener { /** * log4j category */ - private static Logger log = Logger - .getLogger(EventListenerExample.class); + private static Logger log = LogManager.getLogger(EventListenerExample.class); /** * @return null diff --git a/dspace-services/src/main/java/org/dspace/services/ConfigurationService.java b/dspace-services/src/main/java/org/dspace/services/ConfigurationService.java index 4beb2a9f35..050e4c089c 100644 --- a/dspace-services/src/main/java/org/dspace/services/ConfigurationService.java +++ b/dspace-services/src/main/java/org/dspace/services/ConfigurationService.java @@ -10,7 +10,7 @@ package org.dspace.services; import java.util.List; import java.util.Properties; -import org.apache.commons.configuration.Configuration; +import org.apache.commons.configuration2.Configuration; /** diff --git a/dspace-services/src/main/java/org/dspace/services/email/EmailServiceImpl.java b/dspace-services/src/main/java/org/dspace/services/email/EmailServiceImpl.java index 1d8eff903f..f20458f51a 100644 --- a/dspace-services/src/main/java/org/dspace/services/email/EmailServiceImpl.java +++ b/dspace-services/src/main/java/org/dspace/services/email/EmailServiceImpl.java @@ -12,7 +12,9 @@ import javax.mail.Authenticator; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.naming.InitialContext; +import javax.naming.NameNotFoundException; import javax.naming.NamingException; +import javax.naming.NoInitialContextException; import org.dspace.kernel.mixins.InitializedService; import org.dspace.services.ConfigurationService; @@ -33,7 +35,7 @@ import org.springframework.beans.factory.annotation.Required; public class EmailServiceImpl extends Authenticator implements EmailService, InitializedService { - private static final Logger logger = (Logger) LoggerFactory.getLogger(EmailServiceImpl.class); + private static final Logger logger = LoggerFactory.getLogger(EmailServiceImpl.class); private Session session = null; @@ -53,7 +55,7 @@ public class EmailServiceImpl /** * Provide a reference to the JavaMail session. * - * @return the managed Session, or null if none could be created. + * @return the managed Session, or {@code null} if none could be created. */ @Override public Session getSession() { @@ -67,12 +69,16 @@ public class EmailServiceImpl if (null == sessionName) { sessionName = "Session"; } + String sessionUri = "java:comp/env/mail/" + sessionName; + logger.debug("Looking up Session as {}", sessionUri); try { InitialContext ctx = new InitialContext(null); - session = (Session) ctx.lookup("java:comp/env/mail/" + sessionName); + session = (Session) ctx.lookup(sessionUri); + } catch (NameNotFoundException | NoInitialContextException ex) { + // Not a problem -- build a new Session from configuration. } catch (NamingException ex) { - logger.warn("Couldn't get an email session from environment: {}", - ex.getMessage()); + logger.warn("Couldn't get an email session from environment: {}: {}", + ex.getClass().getName(), ex.getMessage()); } if (null != session) { @@ -106,8 +112,6 @@ public class EmailServiceImpl props.put("mail.smtp.auth", "true"); session = Session.getInstance(props, this); } - - } } diff --git a/dspace-services/src/main/java/org/dspace/services/events/SystemEventService.java b/dspace-services/src/main/java/org/dspace/services/events/SystemEventService.java index 3ef22825ce..de67e504a5 100644 --- a/dspace-services/src/main/java/org/dspace/services/events/SystemEventService.java +++ b/dspace-services/src/main/java/org/dspace/services/events/SystemEventService.java @@ -13,7 +13,7 @@ import java.util.Map; import java.util.Random; import java.util.concurrent.ConcurrentHashMap; -import org.apache.commons.lang.ArrayUtils; +import org.apache.commons.lang3.ArrayUtils; import org.dspace.kernel.mixins.ShutdownService; import org.dspace.services.CachingService; import org.dspace.services.EventService; diff --git a/dspace-services/src/main/java/org/dspace/services/sessions/StatelessRequestServiceImpl.java b/dspace-services/src/main/java/org/dspace/services/sessions/StatelessRequestServiceImpl.java index 6f0b18ff40..07798a0225 100644 --- a/dspace-services/src/main/java/org/dspace/services/sessions/StatelessRequestServiceImpl.java +++ b/dspace-services/src/main/java/org/dspace/services/sessions/StatelessRequestServiceImpl.java @@ -18,7 +18,7 @@ import java.util.concurrent.ConcurrentHashMap; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.dspace.kernel.mixins.InitializedService; import org.dspace.kernel.mixins.ShutdownService; import org.dspace.services.ConfigurationService; diff --git a/dspace-services/src/main/resources/spring/spring-dspace-core-services.xml b/dspace-services/src/main/resources/spring/spring-dspace-core-services.xml index e2837bb14f..e5f14b2b07 100644 --- a/dspace-services/src/main/resources/spring/spring-dspace-core-services.xml +++ b/dspace-services/src/main/resources/spring/spring-dspace-core-services.xml @@ -16,18 +16,19 @@ - - - - + + + + + - - - + + + + diff --git a/dspace-services/src/test/java/org/dspace/servicemanager/config/DSpaceConfigurationBeanTest.java b/dspace-services/src/test/java/org/dspace/servicemanager/config/DSpaceConfigurationBeanTest.java new file mode 100644 index 0000000000..fb121a2570 --- /dev/null +++ b/dspace-services/src/test/java/org/dspace/servicemanager/config/DSpaceConfigurationBeanTest.java @@ -0,0 +1,134 @@ +/** + * The contents of this file are subject to the license and copyright + * detailed in the LICENSE and NOTICE files at the root of the source + * tree and available online at + * + * http://www.dspace.org/license/ + */ +package org.dspace.servicemanager.config; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import java.io.File; + +import org.dspace.services.ConfigurationService; +import org.dspace.test.DSpaceAbstractKernelTest; +import org.junit.Before; +import org.junit.Test; + +/** + * Testing the org.apache.commons.configuration2.spring.ConfigurationPropertiesFactoryBean to ensure it performs + * property substitution in Spring XML configs (e.g. replacing ${dspace.dir} with the value from dspace.cfg) + *

+ * NOTE: This uses a TestDynamicPropertyBean bean defined in spring-test-beans.xml for all tests. It also depends + * on the org.springframework.beans.factory.config.PropertyPlaceholderConfigurer defined in + * spring-dspace-core-services.xml + * + * @author Tim Donohue + */ +public class DSpaceConfigurationBeanTest + extends DSpaceAbstractKernelTest { + + // Path to our main test config file (local.properties) + private String propertyFilePath; + + @Before + public void init() { + // Save the path to our main test configuration file + propertyFilePath = new DSpaceConfigurationService().getDSpaceHome(null) + File.separatorChar + + DSpaceConfigurationService.DEFAULT_CONFIG_DIR + File.separatorChar + "local.properties"; + } + + /** + * Test that property substitution is working properly in Spring XML configs. + * Properties in those XML configs (e.g. ${key}) should be dynamically replaced + * with the corresponding value from our ConfigurationService + */ + @Test + public void testGetBeanSettingFromConfigurationService() { + + // Load configs from files + ConfigurationService cfg = getKernel().getConfigurationService(); + assertNotNull("ConfigurationService returned null", cfg); + assertNotNull("test config returned null", cfg.getProperty("testDynamicBean.property")); + + //Load example service which is configured using a dynamic property (which is specified in a config file) + // See spring-test-beans.xml + TestDynamicPropertyBean bean = getKernel().getServiceManager().getServiceByName("dynamicPropertyBean", + TestDynamicPropertyBean.class); + + assertNotNull("Bean returned null", bean); + assertNotNull("Bean.name() returned null", bean.getProperty()); + + // The bean's getProperty() method should return the same value as "testDynamicBean.property" in DSpace's + // configuration. This is cause bean's property is set to ${testDynamicBean.property} in spring-test-beans.xml + assertEquals("Bean.getProperty() does not match configuration", cfg.getProperty("testDynamicBean.property"), + bean.getProperty()); + } + + /** + * Test that property substitution is working properly in Spring PropertySource (e.g. @Value annotations) + * Properties in those annotations, e.g. @Value("${key}"), should be dynamically replaced with the corresponding + * value from our ConfigurationService + */ + @Test + public void testGetPropertySourceFromConfigurationService() { + // Load configs from files + ConfigurationService cfg = getKernel().getConfigurationService(); + assertNotNull("ConfigurationService returned null", cfg); + assertNotNull("test config returned null", cfg.getProperty("testDynamicBean.property")); + + // Load test bean which is defined by TestDynamicAnnotationConfiguration + TestDynamicPropertyBean bean = getKernel().getServiceManager().getServiceByName("propertyBeanUsingAnnotation", + TestDynamicPropertyBean.class); + + // The Test bean's property should be automatically set (see TestDynamicAnnotationConfiguration) + String configValue = bean.getProperty(); + + assertNotNull("PropertySource config returned null", configValue); + + // The value of "configValue" should be equal to "testDynamicBean.property" in our configuration. + // This is because configValue is set via an @Value annotation in TestDynamicAnnotationConfiguration + assertEquals("PropertySource config does not match configuration", cfg.getProperty("testDynamicBean.property"), + configValue); + } + + /** + * Test that automatic reloading of configuration via bean settings also works. + * + * @TODO: This test does not actually work yet, because Commons Configuration v2 doesn't yet have a + * org.apache.commons.configuration2.spring.ConfigurationPropertiesFactoryBean that supports reloading properties. + * NOTE: This test also fails in Commons Configuration v1 (e.g. in DSpace 6.x). So, it's possible we may not be + * able to support reloadable properties via Spring beans (until Commons Configuration does) + */ + /*@Test + public void testReloadBeanSettingFromConfigurationService() throws ConfigurationException, InterruptedException { + //Load example service which is configured using a dynamic property (which is specified in a config file) + // See spring-test-beans.xml + TestDynamicPropertyBean bean = getKernel().getServiceManager().getServiceByName("dynamicPropertyBean", + TestDynamicPropertyBean.class); + assertNotNull("WeLoveDSpace", bean.getProperty()); + + // Change the value of that Property in the file itself (using a separate builder instance) + FileBasedConfigurationBuilder builder = new Configurations() + .propertiesBuilder(propertyFilePath); + PropertiesConfiguration config = builder.getConfiguration(); + // Clear out current value. Add in a new value + config.clearProperty("testDynamicBean.property"); + config.addProperty("testDynamicBean.property", "NewValue"); + // Save updates to file + builder.save(); + + // Check immediately. Property should be unchanged + // NOTE: If this fails, then somehow the configuration reloaded *immediately* + assertEquals("WeLoveDSpace", bean.getProperty()); + + // Wait now for 3 seconds + Thread.sleep(3_000); + + // Check again. Property should have reloaded + // NOTE: reload time is set in config-definition.xml to reload every 2 seconds + assertEquals("NewValue", bean.getProperty()); + } */ +} diff --git a/dspace-services/src/test/java/org/dspace/servicemanager/config/DSpaceConfigurationFactoryBeanTest.java b/dspace-services/src/test/java/org/dspace/servicemanager/config/DSpaceConfigurationFactoryBeanTest.java deleted file mode 100644 index 90804d7823..0000000000 --- a/dspace-services/src/test/java/org/dspace/servicemanager/config/DSpaceConfigurationFactoryBeanTest.java +++ /dev/null @@ -1,57 +0,0 @@ -/** - * The contents of this file are subject to the license and copyright - * detailed in the LICENSE and NOTICE files at the root of the source - * tree and available online at - * - * http://www.dspace.org/license/ - */ -package org.dspace.servicemanager.config; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import org.dspace.services.ConfigurationService; -import org.dspace.test.DSpaceAbstractKernelTest; -import org.junit.Test; - -/** - * Testing the DSpaceConfigurationFactoryBean to ensure it performs property - * substitution in Spring XML configs (e.g. replacing ${dspace.dir} with the - * value from dspace.cfg) - *

- * NOTE: This uses a TestDynamicPropertyBean bean defined in spring-test-beans.xml - * for all tests. - * - * @author Tim Donohue - */ -public class DSpaceConfigurationFactoryBeanTest - extends DSpaceAbstractKernelTest { - - /** - * Test that property substitution is working properly in Spring XML configs. - * Properties in those configs (e.g. ${key}) should be dynamically replaced - * with the corresponding value from our ConfigurationService - */ - @Test - public void testGetBeanSettingFromConfigurationService() { - - // Load configs from files - ConfigurationService cfg = getKernel().getConfigurationService(); - assertNotNull("ConfigurationService returned null", cfg); - assertNotNull("test config returned null", cfg.getProperty("testDynamicBean.property")); - - //Load example service which is configured using a dynamic property (which is specified in a config file) - // See spring-test-beans.xml - TestDynamicPropertyBean bean = getKernel().getServiceManager().getServiceByName("dynamicPropertyBean", - TestDynamicPropertyBean.class); - - assertNotNull("Bean returned null", bean); - assertNotNull("Bean.name() returned null", bean.getProperty()); - - // The name of the ServiceExample bean should be the SAME as the value of "serviceExample.bean.name" in - // configuration, - // as the spring-test-beans.xml uses ${serviceExample.bean.name} to set the name - assertEquals("Bean.name() does not match configuration", cfg.getProperty("testDynamicBean.property"), - bean.getProperty()); - } -} diff --git a/dspace-services/src/test/java/org/dspace/servicemanager/config/DSpaceConfigurationServiceTest.java b/dspace-services/src/test/java/org/dspace/servicemanager/config/DSpaceConfigurationServiceTest.java index d831fe09c5..e57b05ea50 100644 --- a/dspace-services/src/test/java/org/dspace/servicemanager/config/DSpaceConfigurationServiceTest.java +++ b/dspace-services/src/test/java/org/dspace/servicemanager/config/DSpaceConfigurationServiceTest.java @@ -13,11 +13,16 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; +import java.io.File; import java.util.HashMap; import java.util.Map; import java.util.Properties; import mockit.Expectations; +import org.apache.commons.configuration2.PropertiesConfiguration; +import org.apache.commons.configuration2.builder.FileBasedConfigurationBuilder; +import org.apache.commons.configuration2.builder.fluent.Configurations; +import org.apache.commons.configuration2.ex.ConfigurationException; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -33,10 +38,17 @@ public class DSpaceConfigurationServiceTest { DSpaceConfigurationService configurationService; int numPropsLoaded; + // Path to our main test config file (local.properties) + private String propertyFilePath; + @Before public void init() { configurationService = new DSpaceConfigurationService(); + // Save the path to our main test configuration file + propertyFilePath = configurationService.getDSpaceHome(null) + File.separatorChar + + DSpaceConfigurationService.DEFAULT_CONFIG_DIR + File.separatorChar + "local.properties"; + // clear out default configs (leaves us with an empty Configuration) configurationService.clear(); @@ -174,6 +186,17 @@ public class DSpaceConfigurationServiceTest { assertEquals(1, array.length); assertEquals("A,B,C", array[0]); configurationService.clearConfig("new.array"); + + // Test multiline arrays (requires loading configs from local.properties test config file) + // Specifying the same property multiple times should create an array of values. + DSpaceConfigurationService dscs = new DSpaceConfigurationService(); + array = dscs.getArrayProperty("prop.multiline.array"); + assertNotNull(array); + assertEquals(3, array.length); + assertEquals("line1", array[0]); + assertEquals("line2", array[1]); + assertEquals("line3", array[2]); + dscs.clear(); } /** @@ -242,7 +265,7 @@ public class DSpaceConfigurationServiceTest { /** * Test method for - * {@link org.dspace.servicemanager.config.DSpaceConfigurationService#getHasProperty(java.lang.String)}. + * {@link org.dspace.servicemanager.config.DSpaceConfigurationService#hasProperty(java.lang.String)}. */ @Test public void testHasProperty() { @@ -416,7 +439,7 @@ public class DSpaceConfigurationServiceTest { /** * Test method for - * {@link org.dspace.servicemanager.config.DSpaceConfigurationService#loadConfig(java.lang.String, java.lang.String)}. + * {@link org.dspace.servicemanager.config.DSpaceConfigurationService#loadConfig(java.lang.String, java.lang.Object)}. */ @Test public void testLoadConfig() { @@ -495,6 +518,41 @@ public class DSpaceConfigurationServiceTest { dscs = null; } + /** + * Tests the ability of our ConfigurationService to automatically reload properties after a set period + * of time. + */ + @Test + public void testAutomaticReload() throws ConfigurationException, InterruptedException { + // Initialize new config service + DSpaceConfigurationService dscs = new DSpaceConfigurationService(); + + // Assert a property exists with a specific initial value + assertNotNull(dscs.getProperty("prop.to.auto.reload")); + assertEquals("D-space", dscs.getProperty("prop.to.auto.reload")); + + // Now, change the value of that Property in the file itself (using a separate builder instance) + FileBasedConfigurationBuilder builder = new Configurations() + .propertiesBuilder(propertyFilePath); + PropertiesConfiguration config = builder.getConfiguration(); + // Clear out current value. Add in a new value + config.clearProperty("prop.to.auto.reload"); + config.addProperty("prop.to.auto.reload", "DSpace"); + // Save updates to file + builder.save(); + + // Check immediately. Property should be unchanged + // NOTE: If this fails, then somehow the configuration reloaded *immediately* + assertEquals("D-space", dscs.getProperty("prop.to.auto.reload")); + + // Wait now for 3 seconds + Thread.sleep(3_000); + + // Check again. Property should have reloaded + // NOTE: reload time is set in config-definition.xml to reload every 2 seconds + assertEquals("DSpace", dscs.getProperty("prop.to.auto.reload")); + } + /** * Tests the ability of the system to properly extract system properties into the configuration. * (NOTE: This ability to load system properties is specified in the test "config-definition.xml") @@ -532,6 +590,11 @@ public class DSpaceConfigurationServiceTest { // In local.properties, this value is something like " test " assertEquals("test", dscs.getProperty("prop.needing.trimmed")); + // Also test that properties in included files are loaded + // This property is specified in "included.properties", which is loaded via an "include =" statement in + // local.properties + assertEquals("works", dscs.getProperty("prop.from.included.file")); + dscs.clear(); dscs = null; } diff --git a/dspace-services/src/test/java/org/dspace/servicemanager/config/TestDynamicAnnotationConfiguration.java b/dspace-services/src/test/java/org/dspace/servicemanager/config/TestDynamicAnnotationConfiguration.java new file mode 100644 index 0000000000..581e33e2a3 --- /dev/null +++ b/dspace-services/src/test/java/org/dspace/servicemanager/config/TestDynamicAnnotationConfiguration.java @@ -0,0 +1,33 @@ +/** + * The contents of this file are subject to the license and copyright + * detailed in the LICENSE and NOTICE files at the root of the source + * tree and available online at + * + * http://www.dspace.org/license/ + */ +package org.dspace.servicemanager.config; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * A test bean which we will configure to load its one property via @Value annotation + *

+ * See DSpaceConfigurationFactoryBeanTest. + * + * @author Tim Donohue + */ +@Configuration +public class TestDynamicAnnotationConfiguration { + // This setting should be loaded from the "testDynamicBean.property" configuration in local.properties + @Value("${testDynamicBean.property}") + private String value; + + @Bean + public TestDynamicPropertyBean propertyBeanUsingAnnotation() { + TestDynamicPropertyBean bean = new TestDynamicPropertyBean(); + bean.setProperty(value); + return bean; + } +} diff --git a/dspace-services/src/test/resources/config/config-definition.xml b/dspace-services/src/test/resources/config/config-definition.xml index c172deb491..4ff26e0c34 100644 --- a/dspace-services/src/test/resources/config/config-definition.xml +++ b/dspace-services/src/test/resources/config/config-definition.xml @@ -8,26 +8,27 @@ http://www.dspace.org/license/ --> - - - - + + - + - - + + - \ No newline at end of file + diff --git a/dspace-services/src/test/resources/config/included.properties b/dspace-services/src/test/resources/config/included.properties new file mode 100644 index 0000000000..fcdc3a1efc --- /dev/null +++ b/dspace-services/src/test/resources/config/included.properties @@ -0,0 +1,3 @@ +# This is used by Unit Tests to ensure included properties files works +# See DSpaceConfigurationServiceTest.testGetPropertiesFromFile() +prop.from.included.file = works diff --git a/dspace-services/src/test/resources/config/local.properties b/dspace-services/src/test/resources/config/local.properties index 88cc11cb27..92cb538046 100644 --- a/dspace-services/src/test/resources/config/local.properties +++ b/dspace-services/src/test/resources/config/local.properties @@ -2,6 +2,7 @@ # set the service manager into a testing mode service.manager.developing = true + # a list of all extra spring configs we want the service manager to load on start service.manager.spring.configs=spring/spring-test-services.xml,spring/spring-test-beans.xml @@ -10,5 +11,21 @@ service.manager.spring.configs=spring/spring-test-services.xml,spring/spring-tes testDynamicBean.property = WeLoveDSpace # This is a setting with leading/trailing spaces. Used in Unit Tests to ensure values are trimmed +#See DSpaceConfigurationServiceTest.testGetPropertiesFromFile() prop.needing.trimmed = test +# This setting is used in Unit Tests to ensure multi-line arrays are supported +# See DSpaceConfigurationServiceTest.testGetArray() +prop.multiline.array = line1 +prop.multiline.array = line2 +prop.multiline.array = line3 + +# This setting is used in Unit Tests to ensure "include =" works to include other config files +# See: https://commons.apache.org/proper/commons-configuration/userguide/howto_properties.html +# See DSpaceConfigurationServiceTest.testGetPropertiesFromFile() +include = included.properties + +# This setting is used by Unit Tests to check for automatic reloading +# (We purposefully misspell DSpace and correct it in tests) +# See DSpaceConfigurationServiceTest.testAutomaticReload() +prop.to.auto.reload = D-space diff --git a/dspace-services/src/test/resources/log4j.properties b/dspace-services/src/test/resources/log4j.properties index f90d80b3ad..7dbc0a3bd0 100644 --- a/dspace-services/src/test/resources/log4j.properties +++ b/dspace-services/src/test/resources/log4j.properties @@ -1,7 +1,7 @@ log4j.rootCategory=info log4j.rootLogger=info, stdout -log4j.appender.stdout=org.apache.log4j.ConsoleAppender -log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout=org.apache.logging.log4j.ConsoleAppender +log4j.appender.stdout.layout=org.apache.logging.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern= %p %m [%d] (%F:%L) %n diff --git a/dspace-services/src/test/resources/spring/spring-test-beans.xml b/dspace-services/src/test/resources/spring/spring-test-beans.xml index 1242cb5cee..ed53d7f8f4 100644 --- a/dspace-services/src/test/resources/spring/spring-test-beans.xml +++ b/dspace-services/src/test/resources/spring/spring-test-beans.xml @@ -10,11 +10,18 @@ --> + http://www.springframework.org/schema/beans/spring-beans-2.5.xsd + http://www.springframework.org/schema/context + http://www.springframework.org/schema/context/spring-context-2.5.xsd"> + + + @@ -26,12 +33,10 @@ - + - \ No newline at end of file + diff --git a/dspace-solr/pom.xml b/dspace-solr/pom.xml index 42797d4740..0672ce9cbc 100644 --- a/dspace-solr/pom.xml +++ b/dspace-solr/pom.xml @@ -169,6 +169,14 @@ jetty-xml org.eclipse.jetty + + org.apache.zookeeper + zookeeper + + + log4j + log4j + @@ -224,6 +232,10 @@ jetty-xml org.eclipse.jetty + + log4j + log4j + org.apache.zookeeper zookeeper @@ -231,31 +243,55 @@ + + + org.apache.zookeeper + zookeeper + 3.4.6 + + + log4j + log4j + + + org.slf4j + slf4j-log4j12 + + + + - org.slf4j - jul-to-slf4j - 1.7.14 + org.apache.logging.log4j + log4j-jul + ${log4j.version} - org.slf4j - slf4j-log4j12 - runtime + org.apache.logging.log4j + log4j-api - log4j - log4j - jar - - - javax.servlet - servlet-api - provided + org.apache.logging.log4j + log4j-core + + org.apache.logging.log4j + log4j-web + + + org.apache.logging.log4j + log4j-slf4j-impl + commons-logging commons-logging + + + javax.servlet + javax.servlet-api + provided + diff --git a/dspace-solr/src/main/java/org/dspace/solr/filters/ConfigureLog4jListener.java b/dspace-solr/src/main/java/org/dspace/solr/filters/ConfigureLog4jListener.java deleted file mode 100644 index a177e2db32..0000000000 --- a/dspace-solr/src/main/java/org/dspace/solr/filters/ConfigureLog4jListener.java +++ /dev/null @@ -1,80 +0,0 @@ -/** - * The contents of this file are subject to the license and copyright - * detailed in the LICENSE and NOTICE files at the root of the source - * tree and available online at - * - * http://www.dspace.org/license/ - */ - -package org.dspace.solr.filters; - -import java.io.File; -import java.net.MalformedURLException; -import java.net.URL; -import javax.servlet.ServletContext; -import javax.servlet.ServletContextEvent; -import javax.servlet.ServletContextListener; - -import org.apache.log4j.Hierarchy; -import org.apache.log4j.Level; -import org.apache.log4j.PropertyConfigurator; -import org.apache.log4j.helpers.Loader; -import org.apache.log4j.spi.Configurator; -import org.apache.log4j.spi.RootLogger; -import org.apache.log4j.xml.DOMConfigurator; - -/** - * Initialize Log4J at application startup. - * This class mimics the default Log4J initialization procedure, except - * that it is controlled by context parameters rather than system properties. - * - * @author Mark H. Wood - */ -public class ConfigureLog4jListener - implements ServletContextListener { - public void contextInitialized(ServletContextEvent sce) { - ServletContext ctx = sce.getServletContext(); - - String logConfig = ctx.getInitParameter("log4j.configuration"); - if (null == logConfig) { - logConfig = "log4j.properties"; - } - - URL configURL; - try { - configURL = new File(logConfig).toURI().toURL(); - } catch (MalformedURLException e) { - configURL = Loader.getResource(logConfig); - } - - if (null == configURL) { - ctx.log("Log4J configuration not found. Left unconfigured."); - return; - } else { - ctx.log(" In context " + ctx.getContextPath() + - ", configuring Log4J from " + configURL.toExternalForm()); - - String configuratorName = ctx.getInitParameter("log4j.configuratorClass"); - if (null != configuratorName) { - Configurator configurator; - try { - configurator = (Configurator) Class.forName(configuratorName).newInstance(); - } catch (Exception ex) { - ctx.log("Unable to load custom Log4J configuration class '" - + configuratorName + "': " + ex.getMessage()); - return; - } - - configurator.doConfigure(configURL, new Hierarchy(new RootLogger(Level.OFF))); - } else if (configURL.getFile().endsWith(".xml")) { - DOMConfigurator.configure(configURL); - } else { - PropertyConfigurator.configure(configURL); - } - } - } - - public void contextDestroyed(ServletContextEvent sce) { - // Nothing to be done - } -} diff --git a/dspace-solr/src/main/webapp/WEB-INF/web.xml b/dspace-solr/src/main/webapp/WEB-INF/web.xml index 67350c4dcc..fd5846a4b4 100644 --- a/dspace-solr/src/main/webapp/WEB-INF/web.xml +++ b/dspace-solr/src/main/webapp/WEB-INF/web.xml @@ -1,6 +1,4 @@ - - + - - + Solr home: configuration, cores etc. solr/home ${dspace.dir}/solr java.lang.String - + - log4j.configuration - ${dspace.dir}/config/log4j-solr.properties - URL locating a Log4J configuration file (properties or XML). + + URL locating a Log4J configuration file (properties or XML). + + log4jConfiguration + ${dspace.dir}/config/log4j-solr.xml + + org.apache.logging.log4j.web.Log4jServletContextListener + + + + Activate logging + log4jServletFilter + org.apache.logging.log4j.web.Log4jServletFilter + + LocalHostRestrictionFilter @@ -83,6 +88,14 @@ --> + + log4jServletFilter + /* + REQUEST + FORWARD + INCLUDE + ERROR + LocalHostRestrictionFilter @@ -106,10 +119,6 @@ - - org.dspace.solr.filters.ConfigureLog4jListener - - Zookeeper org.apache.solr.servlet.ZookeeperInfoServlet diff --git a/dspace-spring-rest/pom.xml b/dspace-spring-rest/pom.xml index 2bcda527d7..3ea878747b 100644 --- a/dspace-spring-rest/pom.xml +++ b/dspace-spring-rest/pom.xml @@ -181,25 +181,6 @@ org.springframework.boot spring-boot-starter-web ${spring-boot.version} - - - - org.slf4j - log4j-over-slf4j - - - org.slf4j - jul-to-slf4j - - - ch.qos.logback - logback-classic - - org.springframework.boot @@ -245,16 +226,17 @@ test - - - org.springframework.data - spring-data-rest-hal-browser - 2.5.7.RELEASE - - - + + + org.springframework.data + spring-data-rest-hal-browser + 2.5.7.RELEASE + + + @@ -263,11 +245,14 @@ ${spring-boot.version} - - - + + org.springframework.boot spring-boot-starter + ${spring-boot.version} org.springframework.boot @@ -277,8 +262,9 @@ org.springframework.boot - spring-boot-starter-log4j - --> + spring-boot-starter-log4j2 + ${spring-boot.version} + diff --git a/dspace-spring-rest/src/main/java/org/dspace/app/rest/BitstreamContentRestController.java b/dspace-spring-rest/src/main/java/org/dspace/app/rest/BitstreamContentRestController.java index e60007d8ab..b387951f09 100644 --- a/dspace-spring-rest/src/main/java/org/dspace/app/rest/BitstreamContentRestController.java +++ b/dspace-spring-rest/src/main/java/org/dspace/app/rest/BitstreamContentRestController.java @@ -17,7 +17,7 @@ import javax.ws.rs.core.Response; import org.apache.catalina.connector.ClientAbortException; import org.apache.commons.lang3.tuple.Pair; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.app.rest.model.BitstreamRest; import org.dspace.app.rest.utils.ContextUtil; import org.dspace.app.rest.utils.MultipartFileSender; @@ -57,7 +57,8 @@ import org.springframework.web.bind.annotation.RestController; + "/{uuid:[0-9a-fxA-FX]{8}-[0-9a-fxA-FX]{4}-[0-9a-fxA-FX]{4}-[0-9a-fxA-FX]{4}-[0-9a-fxA-FX]{12}}/content") public class BitstreamContentRestController { - private static final Logger log = Logger.getLogger(BitstreamContentRestController.class); + private static final Logger log = org.apache.logging.log4j.LogManager + .getLogger(BitstreamContentRestController.class); //Most file systems are configured to use block sizes of 4096 or 8192 and our buffer should be a multiple of that. private static final int BUFFER_SIZE = 4096 * 10; diff --git a/dspace-spring-rest/src/main/java/org/dspace/app/rest/DiscoveryRestController.java b/dspace-spring-rest/src/main/java/org/dspace/app/rest/DiscoveryRestController.java index 85c7a1e098..4afde3df07 100644 --- a/dspace-spring-rest/src/main/java/org/dspace/app/rest/DiscoveryRestController.java +++ b/dspace-spring-rest/src/main/java/org/dspace/app/rest/DiscoveryRestController.java @@ -11,8 +11,9 @@ import java.util.Arrays; import java.util.List; import java.util.Objects; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.dspace.app.rest.link.HalLinkService; import org.dspace.app.rest.model.FacetConfigurationRest; import org.dspace.app.rest.model.FacetResultsRest; @@ -27,7 +28,6 @@ import org.dspace.app.rest.model.hateoas.SearchResultsResource; import org.dspace.app.rest.model.hateoas.SearchSupportResource; import org.dspace.app.rest.parameter.SearchFilter; import org.dspace.app.rest.repository.DiscoveryRestRepository; -import org.dspace.app.rest.utils.ScopeResolver; import org.dspace.app.rest.utils.Utils; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; @@ -47,7 +47,7 @@ import org.springframework.web.bind.annotation.RestController; @RequestMapping("/api/" + SearchResultsRest.CATEGORY) public class DiscoveryRestController implements InitializingBean { - private static final Logger log = Logger.getLogger(ScopeResolver.class); + private static final Logger log = LogManager.getLogger(); @Autowired protected Utils utils; @@ -109,7 +109,7 @@ public class DiscoveryRestController implements InitializingBean { log.trace("Searching with scope: " + StringUtils.trimToEmpty(dsoScope) + ", configuration name: " + StringUtils.trimToEmpty(configurationName) + ", dsoType: " + StringUtils.trimToEmpty(dsoType) - + ", query: " + StringUtils.trimToEmpty(dsoType) + + ", query: " + StringUtils.trimToEmpty(query) + ", filters: " + Objects.toString(searchFilters)); } @@ -136,13 +136,14 @@ public class DiscoveryRestController implements InitializingBean { log.trace("Searching with scope: " + StringUtils.trimToEmpty(dsoScope) + ", configuration name: " + StringUtils.trimToEmpty(configurationName) + ", dsoType: " + StringUtils.trimToEmpty(dsoType) - + ", query: " + StringUtils.trimToEmpty(dsoType) + + ", query: " + StringUtils.trimToEmpty(query) + ", filters: " + Objects.toString(searchFilters) + ", page: " + Objects.toString(page)); } //Get the Search results in JSON format - SearchResultsRest searchResultsRest = discoveryRestRepository + SearchResultsRest searchResultsRest = null; + searchResultsRest = discoveryRestRepository .getSearchObjects(query, dsoType, dsoScope, configurationName, searchFilters, page); //Convert the Search JSON results to paginated HAL resources @@ -181,7 +182,7 @@ public class DiscoveryRestController implements InitializingBean { log.trace("Facetting on facet " + facetName + " with scope: " + StringUtils.trimToEmpty(dsoScope) + ", dsoType: " + StringUtils.trimToEmpty(dsoType) + ", prefix: " + StringUtils.trimToEmpty(prefix) - + ", query: " + StringUtils.trimToEmpty(dsoType) + + ", query: " + StringUtils.trimToEmpty(query) + ", filters: " + Objects.toString(searchFilters) + ", page: " + Objects.toString(page)); } diff --git a/dspace-spring-rest/src/main/java/org/dspace/app/rest/RestResourceController.java b/dspace-spring-rest/src/main/java/org/dspace/app/rest/RestResourceController.java index c9c5c86cda..231b47f2af 100644 --- a/dspace-spring-rest/src/main/java/org/dspace/app/rest/RestResourceController.java +++ b/dspace-spring-rest/src/main/java/org/dspace/app/rest/RestResourceController.java @@ -28,7 +28,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.atteo.evo.inflector.English; import org.dspace.app.rest.converter.JsonPatchConverter; import org.dspace.app.rest.exception.PaginationException; @@ -111,7 +111,7 @@ public class RestResourceController implements InitializingBean { */ private static final String REGEX_REQUESTMAPPING_IDENTIFIER_AS_DIGIT = "/{id:\\d+}"; - private static final Logger log = Logger.getLogger(RestResourceController.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(RestResourceController.class); @Autowired DiscoverableEndpointsService discoverableEndpointsService; diff --git a/dspace-spring-rest/src/main/java/org/dspace/app/rest/RootRestResourceController.java b/dspace-spring-rest/src/main/java/org/dspace/app/rest/RootRestResourceController.java index 76dbb6fce5..93eb7c3c55 100644 --- a/dspace-spring-rest/src/main/java/org/dspace/app/rest/RootRestResourceController.java +++ b/dspace-spring-rest/src/main/java/org/dspace/app/rest/RootRestResourceController.java @@ -9,7 +9,8 @@ package org.dspace.app.rest; import javax.servlet.http.HttpServletRequest; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.dspace.app.rest.link.HalLinkService; import org.dspace.app.rest.model.RootRest; import org.dspace.app.rest.model.hateoas.RootResource; @@ -40,7 +41,7 @@ public class RootRestResourceController { @Autowired RootRestRepository rootRestRepository; - private static Logger log = Logger.getLogger(RootRestResourceController.class); + private static Logger log = LogManager.getLogger(); @RequestMapping(method = RequestMethod.GET) public RootResource listDefinedEndpoint(HttpServletRequest request) { @@ -51,4 +52,4 @@ public class RootRestResourceController { return rootResource; } -} \ No newline at end of file +} diff --git a/dspace-spring-rest/src/main/java/org/dspace/app/rest/converter/AuthorityEntryRestConverter.java b/dspace-spring-rest/src/main/java/org/dspace/app/rest/converter/AuthorityEntryRestConverter.java index 2e4031338a..a278ae313d 100644 --- a/dspace-spring-rest/src/main/java/org/dspace/app/rest/converter/AuthorityEntryRestConverter.java +++ b/dspace-spring-rest/src/main/java/org/dspace/app/rest/converter/AuthorityEntryRestConverter.java @@ -7,7 +7,7 @@ */ package org.dspace.app.rest.converter; -import org.apache.commons.lang.NotImplementedException; +import org.apache.commons.lang3.NotImplementedException; import org.dspace.app.rest.model.AuthorityEntryRest; import org.dspace.app.rest.utils.AuthorityUtils; import org.dspace.content.authority.Choice; @@ -36,6 +36,6 @@ public class AuthorityEntryRestConverter extends DSpaceConverter { - private static final Logger log = Logger.getLogger(BrowseEntryConverter.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(BrowseEntryConverter.class); @Override public BrowseEntryRest convert(String[] source) { diff --git a/dspace-spring-rest/src/main/java/org/dspace/app/rest/converter/CollectionConverter.java b/dspace-spring-rest/src/main/java/org/dspace/app/rest/converter/CollectionConverter.java index c432064b86..a4c368d2b4 100644 --- a/dspace-spring-rest/src/main/java/org/dspace/app/rest/converter/CollectionConverter.java +++ b/dspace-spring-rest/src/main/java/org/dspace/app/rest/converter/CollectionConverter.java @@ -13,7 +13,7 @@ import java.util.List; import java.util.UUID; import javax.servlet.http.HttpServletRequest; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.app.rest.model.CollectionRest; import org.dspace.app.rest.model.ResourcePolicyRest; import org.dspace.app.rest.utils.ContextUtil; @@ -38,7 +38,7 @@ import org.springframework.stereotype.Component; public class CollectionConverter extends DSpaceObjectConverter { - private static final Logger log = Logger.getLogger(CollectionConverter.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(CollectionConverter.class); @Autowired private BitstreamConverter bitstreamConverter; diff --git a/dspace-spring-rest/src/main/java/org/dspace/app/rest/converter/DiscoverFacetsConverter.java b/dspace-spring-rest/src/main/java/org/dspace/app/rest/converter/DiscoverFacetsConverter.java index d33be1ff46..79e3234855 100644 --- a/dspace-spring-rest/src/main/java/org/dspace/app/rest/converter/DiscoverFacetsConverter.java +++ b/dspace-spring-rest/src/main/java/org/dspace/app/rest/converter/DiscoverFacetsConverter.java @@ -10,7 +10,7 @@ package org.dspace.app.rest.converter; import java.util.List; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; import org.dspace.app.rest.model.SearchFacetEntryRest; import org.dspace.app.rest.model.SearchFacetValueRest; diff --git a/dspace-spring-rest/src/main/java/org/dspace/app/rest/converter/EPersonConverter.java b/dspace-spring-rest/src/main/java/org/dspace/app/rest/converter/EPersonConverter.java index 05632370f2..0e39d3a7fb 100644 --- a/dspace-spring-rest/src/main/java/org/dspace/app/rest/converter/EPersonConverter.java +++ b/dspace-spring-rest/src/main/java/org/dspace/app/rest/converter/EPersonConverter.java @@ -11,7 +11,7 @@ import java.sql.SQLException; import java.util.ArrayList; import java.util.List; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.app.rest.model.EPersonRest; import org.dspace.app.rest.model.GroupRest; import org.dspace.core.Context; @@ -36,7 +36,7 @@ public class EPersonConverter extends DSpaceObjectConverter { - private static final Logger log = Logger.getLogger(GroupConverter.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(GroupConverter.class); @Override public GroupRest fromModel(Group obj) { diff --git a/dspace-spring-rest/src/main/java/org/dspace/app/rest/converter/ItemConverter.java b/dspace-spring-rest/src/main/java/org/dspace/app/rest/converter/ItemConverter.java index 4dcd745d02..ae7c3a602e 100644 --- a/dspace-spring-rest/src/main/java/org/dspace/app/rest/converter/ItemConverter.java +++ b/dspace-spring-rest/src/main/java/org/dspace/app/rest/converter/ItemConverter.java @@ -12,7 +12,7 @@ import java.util.ArrayList; import java.util.LinkedList; import java.util.List; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.app.rest.model.BitstreamRest; import org.dspace.app.rest.model.ItemRest; import org.dspace.app.rest.model.MetadataEntryRest; @@ -48,7 +48,7 @@ public class ItemConverter extends DSpaceObjectConverter { - private static final Logger log = Logger.getLogger(SubmissionDefinitionConverter.class); + private static final Logger log = org.apache.logging.log4j.LogManager + .getLogger(SubmissionDefinitionConverter.class); @Autowired private SubmissionSectionConverter panelConverter; @@ -79,6 +80,6 @@ public class SubmissionDefinitionConverter extends DSpaceConverter { - private static final Logger log = Logger.getLogger(SubmissionSectionConverter.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(SubmissionSectionConverter.class); private SubmissionConfigReader submissionConfigReader; diff --git a/dspace-spring-rest/src/main/java/org/dspace/app/rest/converter/WorkspaceItemConverter.java b/dspace-spring-rest/src/main/java/org/dspace/app/rest/converter/WorkspaceItemConverter.java index 89eae193dc..22cee05541 100644 --- a/dspace-spring-rest/src/main/java/org/dspace/app/rest/converter/WorkspaceItemConverter.java +++ b/dspace-spring-rest/src/main/java/org/dspace/app/rest/converter/WorkspaceItemConverter.java @@ -10,8 +10,8 @@ package org.dspace.app.rest.converter; import java.sql.SQLException; import java.util.List; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.app.rest.model.ErrorRest; import org.dspace.app.rest.model.SubmissionDefinitionRest; import org.dspace.app.rest.model.SubmissionSectionRest; @@ -37,7 +37,7 @@ import org.springframework.stereotype.Component; public class WorkspaceItemConverter extends DSpaceConverter { - private static final Logger log = Logger.getLogger(WorkspaceItemConverter.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(WorkspaceItemConverter.class); @Autowired private EPersonConverter epersonConverter; diff --git a/dspace-spring-rest/src/main/java/org/dspace/app/rest/converter/query/SearchQueryConverter.java b/dspace-spring-rest/src/main/java/org/dspace/app/rest/converter/query/SearchQueryConverter.java index 5aff3adafd..4ea5e6f9df 100644 --- a/dspace-spring-rest/src/main/java/org/dspace/app/rest/converter/query/SearchQueryConverter.java +++ b/dspace-spring-rest/src/main/java/org/dspace/app/rest/converter/query/SearchQueryConverter.java @@ -11,7 +11,7 @@ import java.util.LinkedList; import java.util.List; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.dspace.app.rest.model.query.RestSearchOperator; import org.dspace.app.rest.parameter.SearchFilter; diff --git a/dspace-spring-rest/src/main/java/org/dspace/app/rest/exception/DSpaceApiExceptionControllerAdvice.java b/dspace-spring-rest/src/main/java/org/dspace/app/rest/exception/DSpaceApiExceptionControllerAdvice.java index 161c0cf403..ac68d0ffdb 100644 --- a/dspace-spring-rest/src/main/java/org/dspace/app/rest/exception/DSpaceApiExceptionControllerAdvice.java +++ b/dspace-spring-rest/src/main/java/org/dspace/app/rest/exception/DSpaceApiExceptionControllerAdvice.java @@ -38,6 +38,7 @@ import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExcep */ @ControllerAdvice public class DSpaceApiExceptionControllerAdvice extends ResponseEntityExceptionHandler { + @Autowired private RestAuthenticationService restAuthenticationService; @@ -51,6 +52,12 @@ public class DSpaceApiExceptionControllerAdvice extends ResponseEntityExceptionH } } + @ExceptionHandler(IllegalArgumentException.class) + protected void handleIllegalArgumentException(HttpServletRequest request, HttpServletResponse response, + Exception ex) throws IOException { + sendErrorResponse(request, response, ex, ex.getMessage(), HttpServletResponse.SC_BAD_REQUEST); + } + @ExceptionHandler(SQLException.class) protected void handleSQLException(HttpServletRequest request, HttpServletResponse response, Exception ex) throws IOException { diff --git a/dspace-spring-rest/src/main/java/org/dspace/app/rest/link/HalLinkService.java b/dspace-spring-rest/src/main/java/org/dspace/app/rest/link/HalLinkService.java index 799623b7ff..2529d275ab 100644 --- a/dspace-spring-rest/src/main/java/org/dspace/app/rest/link/HalLinkService.java +++ b/dspace-spring-rest/src/main/java/org/dspace/app/rest/link/HalLinkService.java @@ -16,7 +16,7 @@ import java.util.stream.Collectors; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.app.rest.model.hateoas.EmbeddedPage; import org.dspace.app.rest.model.hateoas.HALResource; import org.springframework.beans.factory.annotation.Autowired; @@ -33,7 +33,7 @@ import org.springframework.stereotype.Component; @ComponentScan public class HalLinkService { - private static final Logger log = Logger.getLogger(HalLinkService.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(HalLinkService.class); @Autowired private List halLinkFactories; diff --git a/dspace-spring-rest/src/main/java/org/dspace/app/rest/link/relation/RelationshipHalLinkFactory.java b/dspace-spring-rest/src/main/java/org/dspace/app/rest/link/relation/RelationshipHalLinkFactory.java new file mode 100644 index 0000000000..9da50be395 --- /dev/null +++ b/dspace-spring-rest/src/main/java/org/dspace/app/rest/link/relation/RelationshipHalLinkFactory.java @@ -0,0 +1,47 @@ +/** + * The contents of this file are subject to the license and copyright + * detailed in the LICENSE and NOTICE files at the root of the source + * tree and available online at + * + * http://www.dspace.org/license/ + */ +package org.dspace.app.rest.link.relation; + +import java.util.LinkedList; + +import org.atteo.evo.inflector.English; +import org.dspace.app.rest.RestResourceController; +import org.dspace.app.rest.link.HalLinkFactory; +import org.dspace.app.rest.model.ItemRest; +import org.dspace.app.rest.model.hateoas.RelationshipResource; +import org.springframework.data.domain.Pageable; +import org.springframework.hateoas.Link; +import org.springframework.stereotype.Component; + +/** + * This class adds links to {@link org.dspace.app.rest.model.hateoas.RelationshipResource}s + * This builds a link to both items included in the relationship + */ +@Component +public class RelationshipHalLinkFactory extends HalLinkFactory { + @Override + protected void addLinks(RelationshipResource halResource, Pageable pageable, LinkedList list) + throws Exception { + + list.add(buildLink("leftItem", getMethodOn() + .findOne(ItemRest.CATEGORY, English.plural(ItemRest.NAME), halResource.getContent().getLeftId(), null))); + + list.add(buildLink("rightItem", getMethodOn() + .findOne(ItemRest.CATEGORY, English.plural(ItemRest.NAME), halResource.getContent().getRightId(), null))); + } + + @Override + protected Class getControllerClass() { + return RestResourceController.class; + } + + @Override + protected Class getResourceClass() { + return RelationshipResource.class; + } +} diff --git a/dspace-spring-rest/src/main/java/org/dspace/app/rest/parameter/SearchFilter.java b/dspace-spring-rest/src/main/java/org/dspace/app/rest/parameter/SearchFilter.java index e2a352668d..7ebd5a6135 100644 --- a/dspace-spring-rest/src/main/java/org/dspace/app/rest/parameter/SearchFilter.java +++ b/dspace-spring-rest/src/main/java/org/dspace/app/rest/parameter/SearchFilter.java @@ -7,7 +7,7 @@ */ package org.dspace.app.rest.parameter; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; /** * Custom request parameter used in the Discovery search REST endpoint. diff --git a/dspace-spring-rest/src/main/java/org/dspace/app/rest/parameter/resolver/SearchFilterResolver.java b/dspace-spring-rest/src/main/java/org/dspace/app/rest/parameter/resolver/SearchFilterResolver.java index 20b30750f8..7607e7c19c 100644 --- a/dspace-spring-rest/src/main/java/org/dspace/app/rest/parameter/resolver/SearchFilterResolver.java +++ b/dspace-spring-rest/src/main/java/org/dspace/app/rest/parameter/resolver/SearchFilterResolver.java @@ -12,7 +12,7 @@ import java.util.Iterator; import java.util.LinkedList; import java.util.List; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.dspace.app.rest.parameter.SearchFilter; import org.springframework.core.MethodParameter; import org.springframework.web.bind.support.WebDataBinderFactory; diff --git a/dspace-spring-rest/src/main/java/org/dspace/app/rest/repository/AuthorityEntryLinkRepository.java b/dspace-spring-rest/src/main/java/org/dspace/app/rest/repository/AuthorityEntryLinkRepository.java index 9003c67b1d..e7f3f2f017 100644 --- a/dspace-spring-rest/src/main/java/org/dspace/app/rest/repository/AuthorityEntryLinkRepository.java +++ b/dspace-spring-rest/src/main/java/org/dspace/app/rest/repository/AuthorityEntryLinkRepository.java @@ -13,7 +13,7 @@ import java.util.List; import java.util.UUID; import javax.servlet.http.HttpServletRequest; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.dspace.app.rest.model.AuthorityEntryRest; import org.dspace.app.rest.model.AuthorityRest; import org.dspace.app.rest.model.hateoas.AuthorityEntryResource; diff --git a/dspace-spring-rest/src/main/java/org/dspace/app/rest/repository/DSpaceRestRepository.java b/dspace-spring-rest/src/main/java/org/dspace/app/rest/repository/DSpaceRestRepository.java index a27ffbf2e4..c0faa41879 100644 --- a/dspace-spring-rest/src/main/java/org/dspace/app/rest/repository/DSpaceRestRepository.java +++ b/dspace-spring-rest/src/main/java/org/dspace/app/rest/repository/DSpaceRestRepository.java @@ -15,7 +15,7 @@ import java.sql.SQLException; import javax.servlet.http.HttpServletRequest; import com.fasterxml.jackson.databind.JsonNode; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.app.rest.exception.PatchBadRequestException; import org.dspace.app.rest.exception.RESTAuthorizationException; import org.dspace.app.rest.exception.RepositoryMethodNotImplementedException; @@ -45,7 +45,7 @@ public abstract class DSpaceRestRepository { - private static final Logger log = Logger.getLogger(DSpaceRestRepository.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(DSpaceRestRepository.class); //Trick to make inner-calls to ourselves that are checked by Spring security //See: diff --git a/dspace-spring-rest/src/main/java/org/dspace/app/rest/repository/DiscoveryRestRepository.java b/dspace-spring-rest/src/main/java/org/dspace/app/rest/repository/DiscoveryRestRepository.java index 4ccfc51ae6..ec73a24e2c 100644 --- a/dspace-spring-rest/src/main/java/org/dspace/app/rest/repository/DiscoveryRestRepository.java +++ b/dspace-spring-rest/src/main/java/org/dspace/app/rest/repository/DiscoveryRestRepository.java @@ -9,7 +9,10 @@ package org.dspace.app.rest.repository; import java.util.List; -import org.apache.log4j.Logger; +import javax.ws.rs.BadRequestException; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.dspace.app.rest.converter.DiscoverConfigurationConverter; import org.dspace.app.rest.converter.DiscoverFacetConfigurationConverter; import org.dspace.app.rest.converter.DiscoverFacetResultsConverter; @@ -46,7 +49,7 @@ import org.springframework.stereotype.Component; @Component(SearchResultsRest.CATEGORY + "." + SearchResultsRest.NAME) public class DiscoveryRestRepository extends AbstractDSpaceRestRepository { - private static final Logger log = Logger.getLogger(ScopeResolver.class); + private static final Logger log = LogManager.getLogger(); @Autowired private DiscoveryConfigurationService searchConfigurationService; @@ -91,7 +94,7 @@ public class DiscoveryRestRepository extends AbstractDSpaceRestRepository { public SearchResultsRest getSearchObjects(final String query, final String dsoType, final String dsoScope, final String configurationName, final List searchFilters, final Pageable page) - throws InvalidRequestException { + throws InvalidRequestException, BadRequestException { Context context = obtainContext(); DSpaceObject scopeObject = scopeResolver.resolveScope(context, dsoScope); @@ -108,6 +111,7 @@ public class DiscoveryRestRepository extends AbstractDSpaceRestRepository { } catch (SearchServiceException e) { log.error("Error while searching with Discovery", e); + throw new IllegalArgumentException("Error while searching with Discovery: " + e.getMessage()); } return discoverResultConverter diff --git a/dspace-spring-rest/src/main/java/org/dspace/app/rest/repository/EPersonRestRepository.java b/dspace-spring-rest/src/main/java/org/dspace/app/rest/repository/EPersonRestRepository.java index 63392a684f..721e4c6313 100644 --- a/dspace-spring-rest/src/main/java/org/dspace/app/rest/repository/EPersonRestRepository.java +++ b/dspace-spring-rest/src/main/java/org/dspace/app/rest/repository/EPersonRestRepository.java @@ -16,7 +16,7 @@ import java.util.UUID; import javax.servlet.http.HttpServletRequest; import com.fasterxml.jackson.databind.ObjectMapper; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.dspace.app.rest.Parameter; import org.dspace.app.rest.SearchRestMethod; import org.dspace.app.rest.converter.EPersonConverter; @@ -269,4 +269,4 @@ public class EPersonRestRepository extends DSpaceRestRepository implements LinkRestRepository { - private static final Logger log = Logger.getLogger(SubmissionUploadRestRepository.class); + private static final Logger log = org.apache.logging.log4j.LogManager + .getLogger(SubmissionUploadRestRepository.class); private SubmissionConfigReader submissionConfigReader; @@ -141,4 +142,4 @@ public class SubmissionUploadRestRepository extends DSpaceRestRepository { /** * log4j category */ - private static final Logger log = Logger.getLogger(AbstractDSpaceObjectBuilder.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(AbstractDSpaceObjectBuilder.class); protected AbstractBuilder(Context context) { this.context = context; diff --git a/dspace-spring-rest/src/test/java/org/dspace/app/rest/builder/AbstractDSpaceObjectBuilder.java b/dspace-spring-rest/src/test/java/org/dspace/app/rest/builder/AbstractDSpaceObjectBuilder.java index 9d1322bcb4..f74d09adfc 100644 --- a/dspace-spring-rest/src/test/java/org/dspace/app/rest/builder/AbstractDSpaceObjectBuilder.java +++ b/dspace-spring-rest/src/test/java/org/dspace/app/rest/builder/AbstractDSpaceObjectBuilder.java @@ -9,7 +9,7 @@ package org.dspace.app.rest.builder; import java.util.Date; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.ResourcePolicy; import org.dspace.content.DSpaceObject; import org.dspace.content.Item; @@ -34,7 +34,7 @@ public abstract class AbstractDSpaceObjectBuilder extends AbstractBuilder { /* Log4j logger*/ - private static final Logger log = Logger.getLogger(AbstractDSpaceObjectBuilder.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(AbstractDSpaceObjectBuilder.class); protected AbstractDSpaceObjectBuilder(Context context) { super(context); diff --git a/dspace-spring-rest/src/test/java/org/dspace/app/rest/builder/BitstreamFormatBuilder.java b/dspace-spring-rest/src/test/java/org/dspace/app/rest/builder/BitstreamFormatBuilder.java index ddca4e622a..b0d169bfb8 100644 --- a/dspace-spring-rest/src/test/java/org/dspace/app/rest/builder/BitstreamFormatBuilder.java +++ b/dspace-spring-rest/src/test/java/org/dspace/app/rest/builder/BitstreamFormatBuilder.java @@ -9,7 +9,7 @@ package org.dspace.app.rest.builder; import java.sql.SQLException; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.BitstreamFormat; import org.dspace.core.Context; @@ -22,7 +22,7 @@ import org.dspace.service.DSpaceCRUDService; public class BitstreamFormatBuilder extends AbstractCRUDBuilder { /* Log4j logger*/ - private static final Logger log = Logger.getLogger(BitstreamFormatBuilder.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(BitstreamFormatBuilder.class); private BitstreamFormat bitstreamFormat; diff --git a/dspace-spring-rest/src/test/java/org/dspace/app/rest/builder/CollectionBuilder.java b/dspace-spring-rest/src/test/java/org/dspace/app/rest/builder/CollectionBuilder.java index d14630b90b..8ac3876bb3 100644 --- a/dspace-spring-rest/src/test/java/org/dspace/app/rest/builder/CollectionBuilder.java +++ b/dspace-spring-rest/src/test/java/org/dspace/app/rest/builder/CollectionBuilder.java @@ -16,7 +16,7 @@ import org.apache.commons.lang3.CharEncoding; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Collection; import org.dspace.content.Community; -import org.dspace.content.MetadataSchema; +import org.dspace.content.MetadataSchemaEnum; import org.dspace.content.service.DSpaceObjectService; import org.dspace.core.Context; @@ -50,7 +50,7 @@ public class CollectionBuilder extends AbstractDSpaceObjectBuilder { } public CollectionBuilder withName(final String name) { - return setMetadataSingleValue(collection, MetadataSchema.DC_SCHEMA, "title", null, name); + return setMetadataSingleValue(collection, MetadataSchemaEnum.DC.getName(), "title", null, name); } public CollectionBuilder withLogo(final String content) throws AuthorizeException, IOException, SQLException { diff --git a/dspace-spring-rest/src/test/java/org/dspace/app/rest/builder/CommunityBuilder.java b/dspace-spring-rest/src/test/java/org/dspace/app/rest/builder/CommunityBuilder.java index 1cf9ba74cb..a517d71f2a 100644 --- a/dspace-spring-rest/src/test/java/org/dspace/app/rest/builder/CommunityBuilder.java +++ b/dspace-spring-rest/src/test/java/org/dspace/app/rest/builder/CommunityBuilder.java @@ -15,7 +15,7 @@ import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.CharEncoding; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Community; -import org.dspace.content.MetadataSchema; +import org.dspace.content.MetadataSchemaEnum; import org.dspace.content.service.DSpaceObjectService; import org.dspace.core.Context; @@ -59,7 +59,7 @@ public class CommunityBuilder extends AbstractDSpaceObjectBuilder { } public CommunityBuilder withName(final String communityName) { - return setMetadataSingleValue(community, MetadataSchema.DC_SCHEMA, "title", null, communityName); + return setMetadataSingleValue(community, MetadataSchemaEnum.DC.getName(), "title", null, communityName); } public CommunityBuilder withLogo(String content) throws AuthorizeException, IOException, SQLException { diff --git a/dspace-spring-rest/src/test/java/org/dspace/app/rest/builder/ItemBuilder.java b/dspace-spring-rest/src/test/java/org/dspace/app/rest/builder/ItemBuilder.java index cf498cf0fb..b2127100e3 100644 --- a/dspace-spring-rest/src/test/java/org/dspace/app/rest/builder/ItemBuilder.java +++ b/dspace-spring-rest/src/test/java/org/dspace/app/rest/builder/ItemBuilder.java @@ -10,7 +10,7 @@ package org.dspace.app.rest.builder; import org.dspace.content.Collection; import org.dspace.content.DCDate; import org.dspace.content.Item; -import org.dspace.content.MetadataSchema; +import org.dspace.content.MetadataSchemaEnum; import org.dspace.content.WorkspaceItem; import org.dspace.content.service.DSpaceObjectService; import org.dspace.core.Context; @@ -52,19 +52,20 @@ public class ItemBuilder extends AbstractDSpaceObjectBuilder { } public ItemBuilder withTitle(final String title) { - return setMetadataSingleValue(item, MetadataSchema.DC_SCHEMA, "title", null, title); + return setMetadataSingleValue(item, MetadataSchemaEnum.DC.getName(), "title", null, title); } public ItemBuilder withIssueDate(final String issueDate) { - return addMetadataValue(item, MetadataSchema.DC_SCHEMA, "date", "issued", new DCDate(issueDate).toString()); + return addMetadataValue(item, MetadataSchemaEnum.DC.getName(), + "date", "issued", new DCDate(issueDate).toString()); } public ItemBuilder withAuthor(final String authorName) { - return addMetadataValue(item, MetadataSchema.DC_SCHEMA, "contributor", "author", authorName); + return addMetadataValue(item, MetadataSchemaEnum.DC.getName(), "contributor", "author", authorName); } public ItemBuilder withSubject(final String subject) { - return addMetadataValue(item, MetadataSchema.DC_SCHEMA, "subject", null, subject); + return addMetadataValue(item, MetadataSchemaEnum.DC.getName(), "subject", null, subject); } public ItemBuilder withRelationshipType(final String relationshipType) { diff --git a/dspace-spring-rest/src/test/java/org/dspace/app/rest/builder/MetadataFieldBuilder.java b/dspace-spring-rest/src/test/java/org/dspace/app/rest/builder/MetadataFieldBuilder.java index 42f9c10752..061e5f7c0d 100644 --- a/dspace-spring-rest/src/test/java/org/dspace/app/rest/builder/MetadataFieldBuilder.java +++ b/dspace-spring-rest/src/test/java/org/dspace/app/rest/builder/MetadataFieldBuilder.java @@ -10,7 +10,7 @@ package org.dspace.app.rest.builder; import java.io.IOException; import java.sql.SQLException; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.MetadataField; import org.dspace.content.MetadataSchema; @@ -22,7 +22,7 @@ import org.dspace.discovery.SearchServiceException; public class MetadataFieldBuilder extends AbstractBuilder { /* Log4j logger*/ - private static final Logger log = Logger.getLogger(MetadataFieldBuilder.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(MetadataFieldBuilder.class); private MetadataField metadataField; diff --git a/dspace-spring-rest/src/test/java/org/dspace/app/rest/builder/MetadataSchemaBuilder.java b/dspace-spring-rest/src/test/java/org/dspace/app/rest/builder/MetadataSchemaBuilder.java index 5b42f0b24a..3f060accc4 100644 --- a/dspace-spring-rest/src/test/java/org/dspace/app/rest/builder/MetadataSchemaBuilder.java +++ b/dspace-spring-rest/src/test/java/org/dspace/app/rest/builder/MetadataSchemaBuilder.java @@ -9,7 +9,7 @@ package org.dspace.app.rest.builder; import java.sql.SQLException; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.MetadataSchema; import org.dspace.content.NonUniqueMetadataException; @@ -20,7 +20,7 @@ import org.dspace.discovery.SearchServiceException; public class MetadataSchemaBuilder extends AbstractBuilder { /* Log4j logger*/ - private static final Logger log = Logger.getLogger(MetadataSchemaBuilder.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(MetadataSchemaBuilder.class); private MetadataSchema metadataSchema; diff --git a/dspace-spring-rest/src/test/java/org/dspace/app/rest/builder/WorkspaceItemBuilder.java b/dspace-spring-rest/src/test/java/org/dspace/app/rest/builder/WorkspaceItemBuilder.java index 4d73d23b19..ce71acac3e 100644 --- a/dspace-spring-rest/src/test/java/org/dspace/app/rest/builder/WorkspaceItemBuilder.java +++ b/dspace-spring-rest/src/test/java/org/dspace/app/rest/builder/WorkspaceItemBuilder.java @@ -14,7 +14,7 @@ import org.dspace.content.Collection; import org.dspace.content.DCDate; import org.dspace.content.Item; import org.dspace.content.LicenseUtils; -import org.dspace.content.MetadataSchema; +import org.dspace.content.MetadataSchemaEnum; import org.dspace.content.WorkspaceItem; import org.dspace.content.service.WorkspaceItemService; import org.dspace.core.Context; @@ -101,19 +101,19 @@ public class WorkspaceItemBuilder extends AbstractBuilder relationshipTypeList = relationshipTypeService.findAll(context); + List entityTypeList = entityTypeService.findAll(context); + List relationships = relationshipService.findAll(context); + Iterator itemIterator = itemService.findAll(context); + + Iterator relationshipIterator = relationships.iterator(); + while (relationshipIterator.hasNext()) { + Relationship relationship = relationshipIterator.next(); + relationshipIterator.remove(); + relationshipService.delete(context, relationship); + } + + Iterator relationshipTypeIterator = relationshipTypeList.iterator(); + while (relationshipTypeIterator.hasNext()) { + RelationshipType relationshipType = relationshipTypeIterator.next(); + relationshipTypeIterator.remove(); + relationshipTypeService.delete(context, relationshipType); + } + + Iterator entityTypeIterator = entityTypeList.iterator(); + while (entityTypeIterator.hasNext()) { + EntityType entityType = entityTypeIterator.next(); + entityTypeIterator.remove(); + entityTypeService.delete(context, entityType); + } + + while (itemIterator.hasNext()) { + Item item = itemIterator.next(); + itemIterator.remove(); + itemService.delete(context, item); + } + + super.destroy(); + } + + @Test + public void createRelationshipsWithCsvImportTest() throws Exception { + context.turnOffAuthorisationSystem(); + + parentCommunity = CommunityBuilder.createCommunity(context) + .withName("Parent Community") + .build(); + Community child1 = CommunityBuilder.createSubCommunity(context, parentCommunity) + .withName("Sub Community") + .build(); + Collection col1 = CollectionBuilder.createCollection(context, child1).withName("Collection 1").build(); + Collection col2 = CollectionBuilder.createCollection(context, child1).withName("Collection 2").build(); + Collection col3 = CollectionBuilder.createCollection(context, child1).withName("OrgUnits").build(); + + Item article = ItemBuilder.createItem(context, col1) + .withTitle("Article") + .withIssueDate("2017-10-17") + .withRelationshipType("Publication") + .build(); + + Item itemB = validateSpecificItemRelationCreationCsvImport(col1, article, "TestItemB", "Person", + "isPublicationOfAuthor", + "Relationship list size is 1", 1, 1, 1); + Item itemC = validateSpecificItemRelationCreationCsvImport(col1, article, "TestItemC", "Person", + "isPublicationOfAuthor", + "Relationship list size is 1", 1, 2, 1); + Item itemD = validateSpecificItemRelationCreationCsvImport(col1, article, "TestItemD", "Project", + "isPublicationOfProject", + "Relationship list size is 1", 1, 1, 1); + Item itemE = validateSpecificItemRelationCreationCsvImportMultiple(col1, "TestItemE", "Publication", + "isAuthorOfPublication", + "Relationship list size is 2", 2, 1, 2, + itemC, itemB); + + List relationships = relationshipService.findByItem(context, itemE); + getClient().perform(get("/api/core/relationships/" + relationships.get(0).getID())) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.leftPlace", is(1))) + .andExpect(jsonPath("$.rightId", is(itemC.getID().toString()))) + .andExpect(jsonPath("$.rightPlace", is(2))) + .andExpect(jsonPath("$", Matchers.is(RelationshipMatcher.matchRelationship(relationships.get(0))))); + getClient().perform(get("/api/core/relationships/" + relationships.get(1).getID().toString())) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.leftPlace", is(2))) + .andExpect(jsonPath("$.rightId", is(itemB.getID().toString()))) + .andExpect(jsonPath("$.rightPlace", is(2))) + .andExpect(jsonPath("$", Matchers.is(RelationshipMatcher.matchRelationship(relationships.get(1))))); + + Item itemF = validateSpecificItemRelationCreationCsvImport(col1, itemE, "TestItemF", "Person", + "isPublicationOfAuthor", + "Relationship list size is 1", 1, 3, 1); + + UpdateItemEToDeleteRelationshipToC(itemE, itemB, itemF, col1, "TestItemE"); + + getClient().perform(get("/api/core/items/" + itemE.getID())).andExpect(status().isOk()); + + assertItemERelationships(itemB, itemE, itemF); + + updateArticleItemToAddAnotherRelationship(col1, article, itemB, itemC, itemF); + + getClient().perform(get("/api/core/items/" + article.getID())).andExpect(status().isOk()); + + assertArticleRelationships(article, itemB, itemC, itemF); + + } + + private void assertItemERelationships(Item itemB, Item itemE, Item itemF) throws SQLException { + List relationshipsForItemE = relationshipService.findByItem(context, itemE); + assertThat(relationshipsForItemE.size(), is(2)); + assertThat(relationshipsForItemE.get(0).getRightItem(), is(itemF)); + assertThat(relationshipsForItemE.get(1).getRightItem(), is(itemB)); + } + + private void assertArticleRelationships(Item article, Item itemB, Item itemC, Item itemF) throws SQLException { + List relationshipsForArticle = relationshipService + .findByItemAndRelationshipType(context, article, relationshipTypeService + .findByLeftOrRightLabel(context,"isPublicationOfAuthor").get(0)); + assertThat(relationshipsForArticle.size(), is(3)); + List expectedRelationshipsItemsForArticle = new ArrayList<>(); + expectedRelationshipsItemsForArticle.add(itemC); + expectedRelationshipsItemsForArticle.add(itemF); + expectedRelationshipsItemsForArticle.add(itemB); + + List actualRelationshipsItemsForArticle = new ArrayList<>(); + for (Relationship relationship : relationshipsForArticle) { + if (relationship.getLeftItem().getID() == article.getID()) { + actualRelationshipsItemsForArticle.add(relationship.getLeftItem()); + } else { + actualRelationshipsItemsForArticle.add(relationship.getRightItem()); + } + } + assertThat(true, Matchers.is(actualRelationshipsItemsForArticle + .containsAll(expectedRelationshipsItemsForArticle))); + } + + private void updateArticleItemToAddAnotherRelationship(Collection col1, Item article, Item itemB, Item itemC, + Item itemF) throws Exception { + String csvLineString = article.getID().toString() + "," + col1 + .getHandle() + "," + "Article" + "," + "Publication" + "," + + itemB.getID().toString() + "||" + itemC.getID().toString() + "||" + itemF + .getID().toString(); + String[] csv = {"id,collection,dc.title,relationship.type,relation." + "isAuthorOfPublication", csvLineString}; + performImportScript(csv); + } + + private void UpdateItemEToDeleteRelationshipToC(Item itemE, Item itemB, Item itemF, Collection owningCollection, + String title) throws Exception { + String csvLineString = itemE.getID().toString() + "," + owningCollection + .getHandle() + "," + title + "," + "Person" + "," + itemB.getID().toString() + "||" + itemF.getID() + .toString(); + String[] csv = {"id,collection,dc.title,relationship.type,relation." + "isAuthorOfPublication", csvLineString}; + performImportScript(csv); + + } + + private Item validateSpecificItemRelationCreationCsvImport(Collection col1, Item relatedItem, String itemTitle, + String relationshipType, + String relationshipTypeLabel, + String reasonAssertCheck, Integer sizeToCheck, + Integer leftPlaceToCheck, + Integer rightPlaceToCheck) throws Exception { + String csvLineString = "+," + col1.getHandle() + "," + itemTitle + "," + relationshipType + "," + relatedItem + .getID().toString(); + String[] csv = {"id,collection,dc.title,relationship.type,relation." + relationshipTypeLabel, csvLineString}; + performImportScript(csv); + Iterator itemIteratorItem = itemService.findByMetadataField(context, "dc", "title", null, itemTitle); + Item item = itemIteratorItem.next(); + + List relationships = relationshipService.findByItem(context, item); + assertThat(reasonAssertCheck, relationships.size(), equalTo(sizeToCheck)); + getClient().perform(get("/api/core/items/" + item.getID())).andExpect(status().isOk()); + getClient().perform(get("/api/core/relationships/" + relationships.get(0).getID())) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.leftPlace", is(leftPlaceToCheck))) + .andExpect(jsonPath("$.rightPlace", is(rightPlaceToCheck))) + .andExpect(jsonPath("$", Matchers.is(RelationshipMatcher.matchRelationship(relationships.get(0))))); + + return item; + } + + private Item validateSpecificItemRelationCreationCsvImportMultiple(Collection col1, String itemTitle, + String relationshipType, + String relationshipTypeLabel, + String reasonAssertCheck, Integer sizeToCheck, + Integer leftPlaceToCheck, + Integer rightPlaceToCheck, Item... relatedItem) + throws Exception { + String idStringRelatedItems = ""; + for (Item item : relatedItem) { + idStringRelatedItems += item.getID().toString(); + idStringRelatedItems += "||"; + } + idStringRelatedItems = idStringRelatedItems.substring(0, idStringRelatedItems.length() - 2); + String csvLineString = "+," + col1 + .getHandle() + "," + itemTitle + "," + relationshipType + "," + idStringRelatedItems; + String[] csv = {"id,collection,dc.title,relationship.type,relation." + relationshipTypeLabel, csvLineString}; + performImportScript(csv); + Iterator itemIteratorItem = itemService.findByMetadataField(context, "dc", "title", null, itemTitle); + Item item = itemIteratorItem.next(); + + + return item; + } + + private void performImportScript(String[] csv) throws Exception { + String filename = "test.csv"; + BufferedWriter out = new BufferedWriter( + new OutputStreamWriter( + new FileOutputStream(filename), "UTF-8")); + for (String csvLine : csv) { + out.write(csvLine + "\n"); + } + out.flush(); + out.close(); + out = null; + + runDSpaceScript("metadata-import", "-f", "test.csv", "-e", "admin@email.com", "-s"); + } +} diff --git a/dspace-spring-rest/src/test/java/org/dspace/app/rest/security/jwt/JWTTokenHandlerTest.java b/dspace-spring-rest/src/test/java/org/dspace/app/rest/security/jwt/JWTTokenHandlerTest.java index 75a930aa61..a67f747b62 100644 --- a/dspace-spring-rest/src/test/java/org/dspace/app/rest/security/jwt/JWTTokenHandlerTest.java +++ b/dspace-spring-rest/src/test/java/org/dspace/app/rest/security/jwt/JWTTokenHandlerTest.java @@ -23,6 +23,7 @@ import com.nimbusds.jwt.SignedJWT; import org.dspace.core.Context; import org.dspace.eperson.EPerson; import org.dspace.eperson.service.EPersonService; +import org.dspace.service.ClientInfoService; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -62,6 +63,9 @@ public class JWTTokenHandlerTest { @Mock private EPersonClaimProvider ePersonClaimProvider; + @Mock + private ClientInfoService clientInfoService; + @Spy private List jwtClaimProviders = new ArrayList<>(); @@ -71,6 +75,7 @@ public class JWTTokenHandlerTest { when(ePerson.getSessionSalt()).thenReturn("01234567890123456789012345678901"); when(ePerson.getLastActive()).thenReturn(new Date()); when(context.getCurrentUser()).thenReturn(ePerson); + when(clientInfoService.getClientIp(any())).thenReturn("123.123.123.123"); when(ePersonClaimProvider.getKey()).thenReturn("eid"); when(ePersonClaimProvider.getValue(any(), Mockito.any(HttpServletRequest.class))).thenReturn("epersonID"); jwtClaimProviders.add(ePersonClaimProvider); diff --git a/dspace-spring-rest/src/test/java/org/dspace/app/rest/test/AbstractControllerIntegrationTest.java b/dspace-spring-rest/src/test/java/org/dspace/app/rest/test/AbstractControllerIntegrationTest.java index f0674e4251..9d4e599283 100644 --- a/dspace-spring-rest/src/test/java/org/dspace/app/rest/test/AbstractControllerIntegrationTest.java +++ b/dspace-spring-rest/src/test/java/org/dspace/app/rest/test/AbstractControllerIntegrationTest.java @@ -19,7 +19,7 @@ import javax.servlet.Filter; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.commons.io.Charsets; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.dspace.app.rest.Application; import org.dspace.app.rest.model.patch.Operation; import org.dspace.app.rest.security.MethodSecurityConfig; diff --git a/dspace-spring-rest/src/test/java/org/dspace/app/rest/test/AbstractDSpaceIntegrationTest.java b/dspace-spring-rest/src/test/java/org/dspace/app/rest/test/AbstractDSpaceIntegrationTest.java index 3f129b5528..6854f0a225 100644 --- a/dspace-spring-rest/src/test/java/org/dspace/app/rest/test/AbstractDSpaceIntegrationTest.java +++ b/dspace-spring-rest/src/test/java/org/dspace/app/rest/test/AbstractDSpaceIntegrationTest.java @@ -15,7 +15,8 @@ import java.sql.SQLException; import java.util.Properties; import java.util.TimeZone; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.dspace.app.rest.builder.AbstractBuilder; import org.dspace.servicemanager.DSpaceKernelImpl; import org.dspace.servicemanager.DSpaceKernelInit; @@ -30,7 +31,8 @@ public class AbstractDSpaceIntegrationTest { /** * log4j category */ - private static final Logger log = Logger.getLogger(AbstractDSpaceIntegrationTest.class); + private static final Logger log = LogManager + .getLogger(AbstractDSpaceIntegrationTest.class); /** * Test properties. These configure our general test environment diff --git a/dspace-spring-rest/src/test/java/org/dspace/app/rest/test/AbstractIntegrationTestWithDatabase.java b/dspace-spring-rest/src/test/java/org/dspace/app/rest/test/AbstractIntegrationTestWithDatabase.java index 7c38a89f4d..6f6ee8519a 100644 --- a/dspace-spring-rest/src/test/java/org/dspace/app/rest/test/AbstractIntegrationTestWithDatabase.java +++ b/dspace-spring-rest/src/test/java/org/dspace/app/rest/test/AbstractIntegrationTestWithDatabase.java @@ -12,7 +12,8 @@ import static org.junit.Assert.fail; import java.sql.SQLException; import java.util.Arrays; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.dspace.app.launcher.ScriptLauncher; import org.dspace.app.rest.builder.AbstractBuilder; import org.dspace.authorize.AuthorizeException; @@ -37,7 +38,8 @@ public class AbstractIntegrationTestWithDatabase extends AbstractDSpaceIntegrati /** * log4j category */ - private static final Logger log = Logger.getLogger(AbstractIntegrationTestWithDatabase.class); + private static final Logger log = LogManager + .getLogger(AbstractIntegrationTestWithDatabase.class); /** * Context mock object to use in the tests. diff --git a/dspace-spring-rest/src/test/java/org/dspace/app/rest/utils/MultipartFileSenderTest.java b/dspace-spring-rest/src/test/java/org/dspace/app/rest/utils/MultipartFileSenderTest.java index 629e5fd1ef..c2665f4145 100644 --- a/dspace-spring-rest/src/test/java/org/dspace/app/rest/utils/MultipartFileSenderTest.java +++ b/dspace-spring-rest/src/test/java/org/dspace/app/rest/utils/MultipartFileSenderTest.java @@ -21,7 +21,7 @@ import javax.servlet.http.HttpServletResponse; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.CharEncoding; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.junit.After; import org.junit.Before; @@ -41,7 +41,7 @@ public class MultipartFileSenderTest { /** * log4j category */ - private static final Logger log = Logger.getLogger(MultipartFileSenderTest.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(MultipartFileSenderTest.class); private InputStream is; private String mimeType; diff --git a/dspace-spring-rest/src/test/java/org/dspace/solr/MockSolrServer.java b/dspace-spring-rest/src/test/java/org/dspace/solr/MockSolrServer.java index e5e62e25df..a71d33b82e 100644 --- a/dspace-spring-rest/src/test/java/org/dspace/solr/MockSolrServer.java +++ b/dspace-spring-rest/src/test/java/org/dspace/solr/MockSolrServer.java @@ -13,7 +13,7 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.atomic.AtomicLong; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.apache.solr.client.solrj.SolrServer; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer; @@ -25,7 +25,7 @@ import org.dspace.app.rest.test.AbstractDSpaceIntegrationTest; */ public class MockSolrServer { - private static final Logger log = Logger.getLogger(MockSolrServer.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(MockSolrServer.class); private static final ConcurrentMap loadedCores = new ConcurrentHashMap<>(); private static final ConcurrentMap usersPerCore = new ConcurrentHashMap<>(); private static CoreContainer container = null; diff --git a/dspace-spring-rest/src/test/java/org/dspace/statistics/MockSolrLoggerServiceImpl.java b/dspace-spring-rest/src/test/java/org/dspace/statistics/MockSolrLoggerServiceImpl.java index 543146ff36..8cb60ae780 100644 --- a/dspace-spring-rest/src/test/java/org/dspace/statistics/MockSolrLoggerServiceImpl.java +++ b/dspace-spring-rest/src/test/java/org/dspace/statistics/MockSolrLoggerServiceImpl.java @@ -42,7 +42,6 @@ public class MockSolrLoggerServiceImpl File locationDb = new File(locationDbPath); locationDb.createNewFile(); locationService = new DatabaseReader.Builder(locationDb).build(); - useProxies = configurationService.getBooleanProperty("useProxies"); } @Override diff --git a/dspace-spring-rest/src/test/resources/log4j.properties b/dspace-spring-rest/src/test/resources/log4j.properties index 2500bc47ea..b982e8bd74 100644 --- a/dspace-spring-rest/src/test/resources/log4j.properties +++ b/dspace-spring-rest/src/test/resources/log4j.properties @@ -19,10 +19,10 @@ log4j.rootCategory=INFO, A1 # A1 is set to be a ConsoleAppender. -log4j.appender.A1=org.apache.log4j.ConsoleAppender +log4j.appender.A1=org.apache.logging.log4j.ConsoleAppender # A1 uses PatternLayout. -log4j.appender.A1.layout=org.apache.log4j.PatternLayout +log4j.appender.A1.layout=org.apache.logging.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%d %-5p %c @ %m%n ########################################################################### @@ -40,9 +40,9 @@ log4j.logger.org.dspace.servicemanager=ERROR log4j.logger.org.dspace.providers=ERROR log4j.logger.org.dspace.utils=ERROR -log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout=org.apache.logging.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out -log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout=org.apache.logging.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n # # Root logger option diff --git a/dspace-sword/pom.xml b/dspace-sword/pom.xml index fb26286f27..63f149e01f 100644 --- a/dspace-sword/pom.xml +++ b/dspace-sword/pom.xml @@ -112,7 +112,7 @@ javax.servlet - servlet-api + javax.servlet-api provided @@ -120,24 +120,20 @@ junit test + - log4j - log4j - - - jmxtools - com.sun.jdmk - - - jms - javax.jms - - - jmxri - com.sun.jmx - - + org.apache.logging.log4j + log4j-api + + org.apache.logging.log4j + log4j-core + + + org.apache.logging.log4j + log4j-web + + xom xom diff --git a/dspace-sword/src/main/java/org/dspace/sword/BitstreamEntryGenerator.java b/dspace-sword/src/main/java/org/dspace/sword/BitstreamEntryGenerator.java index 3ce38aec47..14e65d81e1 100644 --- a/dspace-sword/src/main/java/org/dspace/sword/BitstreamEntryGenerator.java +++ b/dspace-sword/src/main/java/org/dspace/sword/BitstreamEntryGenerator.java @@ -10,7 +10,7 @@ package org.dspace.sword; import java.sql.SQLException; import java.util.List; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.Bitstream; import org.dspace.content.BitstreamFormat; import org.dspace.content.Bundle; @@ -33,7 +33,7 @@ public class BitstreamEntryGenerator extends DSpaceATOMEntry { /** * logger */ - private static Logger log = Logger.getLogger(BitstreamEntryGenerator.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(BitstreamEntryGenerator.class); /** * Create a new ATOM Entry generator which can provide a SWORD Entry for diff --git a/dspace-sword/src/main/java/org/dspace/sword/CollectionCollectionGenerator.java b/dspace-sword/src/main/java/org/dspace/sword/CollectionCollectionGenerator.java index d2cf664d5c..6c0927f016 100644 --- a/dspace-sword/src/main/java/org/dspace/sword/CollectionCollectionGenerator.java +++ b/dspace-sword/src/main/java/org/dspace/sword/CollectionCollectionGenerator.java @@ -10,7 +10,7 @@ package org.dspace.sword; import java.util.List; import java.util.Map; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.DSpaceObject; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.CollectionService; @@ -26,7 +26,7 @@ public class CollectionCollectionGenerator extends ATOMCollectionGenerator { * logger */ private static Logger log = - Logger.getLogger(CollectionCollectionGenerator.class); + org.apache.logging.log4j.LogManager.getLogger(CollectionCollectionGenerator.class); protected CollectionService collectionService = ContentServiceFactory.getInstance().getCollectionService(); diff --git a/dspace-sword/src/main/java/org/dspace/sword/CollectionDepositor.java b/dspace-sword/src/main/java/org/dspace/sword/CollectionDepositor.java index 5082e96511..98018ee811 100644 --- a/dspace-sword/src/main/java/org/dspace/sword/CollectionDepositor.java +++ b/dspace-sword/src/main/java/org/dspace/sword/CollectionDepositor.java @@ -12,7 +12,7 @@ import java.io.IOException; import java.sql.SQLException; import java.util.List; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Bitstream; import org.dspace.content.BitstreamFormat; @@ -40,7 +40,7 @@ public class CollectionDepositor extends Depositor { /** * logger */ - private static Logger log = Logger.getLogger(CollectionDepositor.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(CollectionDepositor.class); protected ItemService itemService = ContentServiceFactory.getInstance().getItemService(); diff --git a/dspace-sword/src/main/java/org/dspace/sword/CollectionLocation.java b/dspace-sword/src/main/java/org/dspace/sword/CollectionLocation.java index d2ff871a72..caa9a1fdca 100644 --- a/dspace-sword/src/main/java/org/dspace/sword/CollectionLocation.java +++ b/dspace-sword/src/main/java/org/dspace/sword/CollectionLocation.java @@ -11,7 +11,7 @@ import java.net.MalformedURLException; import java.net.URL; import java.sql.SQLException; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.Collection; import org.dspace.content.DSpaceObject; import org.dspace.core.ConfigurationManager; @@ -30,7 +30,7 @@ public class CollectionLocation { /** * Log4j logger */ - public static final Logger log = Logger.getLogger(CollectionLocation.class); + public static final Logger log = org.apache.logging.log4j.LogManager.getLogger(CollectionLocation.class); protected HandleService handleService = HandleServiceFactory.getInstance() .getHandleService(); diff --git a/dspace-sword/src/main/java/org/dspace/sword/CommunityCollectionGenerator.java b/dspace-sword/src/main/java/org/dspace/sword/CommunityCollectionGenerator.java index a2fba088f1..1d8caa5d16 100644 --- a/dspace-sword/src/main/java/org/dspace/sword/CommunityCollectionGenerator.java +++ b/dspace-sword/src/main/java/org/dspace/sword/CommunityCollectionGenerator.java @@ -9,8 +9,9 @@ package org.dspace.sword; import java.util.List; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.dspace.content.Community; import org.dspace.content.DSpaceObject; import org.dspace.content.MetadataValue; @@ -19,8 +20,7 @@ import org.dspace.content.service.CommunityService; import org.purl.sword.base.Collection; public class CommunityCollectionGenerator extends ATOMCollectionGenerator { - private static Logger log = Logger - .getLogger(CommunityCollectionGenerator.class); + private static Logger log = LogManager.getLogger(CommunityCollectionGenerator.class); protected CommunityService communityService = ContentServiceFactory .getInstance().getCommunityService(); diff --git a/dspace-sword/src/main/java/org/dspace/sword/DSpaceSWORDServer.java b/dspace-sword/src/main/java/org/dspace/sword/DSpaceSWORDServer.java index d742bc1eae..ee6b430278 100644 --- a/dspace-sword/src/main/java/org/dspace/sword/DSpaceSWORDServer.java +++ b/dspace-sword/src/main/java/org/dspace/sword/DSpaceSWORDServer.java @@ -7,7 +7,7 @@ */ package org.dspace.sword; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.core.Context; import org.dspace.core.LogManager; import org.purl.sword.base.AtomDocumentRequest; @@ -33,7 +33,7 @@ public class DSpaceSWORDServer implements SWORDServer { /** * Log4j logger */ - public static final Logger log = Logger.getLogger(DSpaceSWORDServer.class); + public static final Logger log = org.apache.logging.log4j.LogManager.getLogger(DSpaceSWORDServer.class); // methods required by SWORDServer interface //////////////////////////////////////////// diff --git a/dspace-sword/src/main/java/org/dspace/sword/DepositManager.java b/dspace-sword/src/main/java/org/dspace/sword/DepositManager.java index 78f08dd99a..7535302139 100644 --- a/dspace-sword/src/main/java/org/dspace/sword/DepositManager.java +++ b/dspace-sword/src/main/java/org/dspace/sword/DepositManager.java @@ -20,8 +20,8 @@ import java.io.OutputStream; import java.io.PrintWriter; import java.util.Date; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.content.Collection; import org.dspace.content.DSpaceObject; import org.dspace.content.Item; @@ -46,7 +46,7 @@ public class DepositManager { /** * Log4j logger */ - public static final Logger log = Logger.getLogger(DepositManager.class); + public static final Logger log = org.apache.logging.log4j.LogManager.getLogger(DepositManager.class); /** * The SWORD service implementation diff --git a/dspace-sword/src/main/java/org/dspace/sword/ItemCollectionGenerator.java b/dspace-sword/src/main/java/org/dspace/sword/ItemCollectionGenerator.java index 1b1ade604f..0596e534b7 100644 --- a/dspace-sword/src/main/java/org/dspace/sword/ItemCollectionGenerator.java +++ b/dspace-sword/src/main/java/org/dspace/sword/ItemCollectionGenerator.java @@ -9,7 +9,7 @@ package org.dspace.sword; import java.util.List; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.dspace.content.DSpaceObject; import org.dspace.content.Item; import org.dspace.content.MetadataValue; diff --git a/dspace-sword/src/main/java/org/dspace/sword/ItemDepositor.java b/dspace-sword/src/main/java/org/dspace/sword/ItemDepositor.java index e174a9ec2c..da99cfcc36 100644 --- a/dspace-sword/src/main/java/org/dspace/sword/ItemDepositor.java +++ b/dspace-sword/src/main/java/org/dspace/sword/ItemDepositor.java @@ -13,7 +13,7 @@ import java.sql.SQLException; import java.util.Iterator; import java.util.List; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Bitstream; import org.dspace.content.BitstreamFormat; diff --git a/dspace-sword/src/main/java/org/dspace/sword/ItemEntryGenerator.java b/dspace-sword/src/main/java/org/dspace/sword/ItemEntryGenerator.java index 73ca67fc3e..da7dcead4c 100644 --- a/dspace-sword/src/main/java/org/dspace/sword/ItemEntryGenerator.java +++ b/dspace-sword/src/main/java/org/dspace/sword/ItemEntryGenerator.java @@ -10,8 +10,8 @@ package org.dspace.sword; import java.sql.SQLException; import java.util.List; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.Logger; import org.dspace.content.Bitstream; import org.dspace.content.BitstreamFormat; import org.dspace.content.Bundle; @@ -40,7 +40,7 @@ public class ItemEntryGenerator extends DSpaceATOMEntry { /** * logger */ - private static Logger log = Logger.getLogger(ItemEntryGenerator.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(ItemEntryGenerator.class); protected HandleService handleService = HandleServiceFactory.getInstance() .getHandleService(); diff --git a/dspace-sword/src/main/java/org/dspace/sword/SWORDAuthenticator.java b/dspace-sword/src/main/java/org/dspace/sword/SWORDAuthenticator.java index 4497532c25..ec46ab8f22 100644 --- a/dspace-sword/src/main/java/org/dspace/sword/SWORDAuthenticator.java +++ b/dspace-sword/src/main/java/org/dspace/sword/SWORDAuthenticator.java @@ -12,7 +12,7 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.authenticate.AuthenticationMethod; import org.dspace.authenticate.factory.AuthenticateServiceFactory; import org.dspace.authenticate.service.AuthenticationService; @@ -53,7 +53,7 @@ public class SWORDAuthenticator { /** * logger */ - private static Logger log = Logger.getLogger(SWORDAuthenticator.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(SWORDAuthenticator.class); protected AuthenticationService authenticationService = AuthenticateServiceFactory.getInstance().getAuthenticationService(); diff --git a/dspace-sword/src/main/java/org/dspace/sword/SWORDConfiguration.java b/dspace-sword/src/main/java/org/dspace/sword/SWORDConfiguration.java index ad52eba956..0bc12934ca 100644 --- a/dspace-sword/src/main/java/org/dspace/sword/SWORDConfiguration.java +++ b/dspace-sword/src/main/java/org/dspace/sword/SWORDConfiguration.java @@ -13,7 +13,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.BitstreamFormat; import org.dspace.content.Collection; import org.dspace.content.DSpaceObject; @@ -44,7 +44,7 @@ public class SWORDConfiguration { /** * logger */ - public static final Logger log = Logger.getLogger(SWORDConfiguration.class); + public static final Logger log = org.apache.logging.log4j.LogManager.getLogger(SWORDConfiguration.class); protected BitstreamFormatService bitstreamFormatService = ContentServiceFactory .getInstance().getBitstreamFormatService(); diff --git a/dspace-sword/src/main/java/org/dspace/sword/SWORDMETSIngester.java b/dspace-sword/src/main/java/org/dspace/sword/SWORDMETSIngester.java index d734256501..6d7ca18367 100644 --- a/dspace-sword/src/main/java/org/dspace/sword/SWORDMETSIngester.java +++ b/dspace-sword/src/main/java/org/dspace/sword/SWORDMETSIngester.java @@ -12,7 +12,7 @@ import java.sql.SQLException; import java.util.Date; import java.util.StringTokenizer; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.Collection; import org.dspace.content.DCDate; import org.dspace.content.DSpaceObject; @@ -38,7 +38,7 @@ public class SWORDMETSIngester implements SWORDIngester { /** * Log4j logger */ - public static final Logger log = Logger.getLogger(SWORDMETSIngester.class); + public static final Logger log = org.apache.logging.log4j.LogManager.getLogger(SWORDMETSIngester.class); /* (non-Javadoc) * @see org.dspace.sword.SWORDIngester#ingest(org.dspace.core.Context, org.purl.sword.base.Deposit) diff --git a/dspace-sword/src/main/java/org/dspace/sword/SWORDService.java b/dspace-sword/src/main/java/org/dspace/sword/SWORDService.java index 6bb30e2f23..a84289a934 100644 --- a/dspace-sword/src/main/java/org/dspace/sword/SWORDService.java +++ b/dspace-sword/src/main/java/org/dspace/sword/SWORDService.java @@ -12,7 +12,7 @@ import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.dspace.content.BitstreamFormat; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.BitstreamFormatService; @@ -33,7 +33,7 @@ public class SWORDService { /** * Log4j logging instance */ - public static final Logger log = Logger.getLogger(SWORDService.class); + public static final Logger log = org.apache.logging.log4j.LogManager.getLogger(SWORDService.class); protected BitstreamFormatService bitstreamFormatService = ContentServiceFactory .getInstance().getBitstreamFormatService(); diff --git a/dspace-sword/src/main/java/org/dspace/sword/SWORDUrlManager.java b/dspace-sword/src/main/java/org/dspace/sword/SWORDUrlManager.java index ab0409c9e5..2a6ce92761 100644 --- a/dspace-sword/src/main/java/org/dspace/sword/SWORDUrlManager.java +++ b/dspace-sword/src/main/java/org/dspace/sword/SWORDUrlManager.java @@ -12,7 +12,7 @@ import java.net.URL; import java.sql.SQLException; import java.util.List; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.dspace.content.Bitstream; import org.dspace.content.Bundle; import org.dspace.content.Collection; diff --git a/dspace-sword/src/main/java/org/purl/sword/atom/Content.java b/dspace-sword/src/main/java/org/purl/sword/atom/Content.java index 35e4bcf0ce..418fa6549e 100644 --- a/dspace-sword/src/main/java/org/purl/sword/atom/Content.java +++ b/dspace-sword/src/main/java/org/purl/sword/atom/Content.java @@ -13,7 +13,7 @@ import java.util.Properties; import nu.xom.Attribute; import nu.xom.Element; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.purl.sword.base.Namespaces; import org.purl.sword.base.SwordElementInterface; import org.purl.sword.base.SwordValidationInfo; @@ -51,7 +51,7 @@ public class Content extends XmlElement implements SwordElementInterface { /** * The log. */ - private static Logger log = Logger.getLogger(Content.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(Content.class); /** * diff --git a/dspace-sword/src/main/java/org/purl/sword/atom/Entry.java b/dspace-sword/src/main/java/org/purl/sword/atom/Entry.java index 09ceb31dc5..7f09d80412 100644 --- a/dspace-sword/src/main/java/org/purl/sword/atom/Entry.java +++ b/dspace-sword/src/main/java/org/purl/sword/atom/Entry.java @@ -14,7 +14,7 @@ import java.util.Properties; import nu.xom.Element; import nu.xom.Elements; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.purl.sword.base.HttpHeaders; import org.purl.sword.base.Namespaces; import org.purl.sword.base.SwordElementInterface; @@ -143,7 +143,7 @@ public class Entry extends XmlElement implements SwordElementInterface { /** * The log. */ - private static Logger log = Logger.getLogger(Entry.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(Entry.class); /** * The prefix, local name and namespace used for this element. diff --git a/dspace-sword/src/main/java/org/purl/sword/atom/Generator.java b/dspace-sword/src/main/java/org/purl/sword/atom/Generator.java index 8f28b8589a..128d39b210 100644 --- a/dspace-sword/src/main/java/org/purl/sword/atom/Generator.java +++ b/dspace-sword/src/main/java/org/purl/sword/atom/Generator.java @@ -13,7 +13,7 @@ import java.util.Properties; import nu.xom.Attribute; import nu.xom.Element; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.purl.sword.base.Namespaces; import org.purl.sword.base.SwordElementInterface; import org.purl.sword.base.SwordValidationInfo; @@ -62,7 +62,7 @@ public class Generator extends XmlElement implements SwordElementInterface { /** * The logger. */ - private static Logger log = Logger.getLogger(Generator.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(Generator.class); /** * The Xml name details for the element. diff --git a/dspace-sword/src/main/java/org/purl/sword/atom/Link.java b/dspace-sword/src/main/java/org/purl/sword/atom/Link.java index c7658ba999..9786a91216 100644 --- a/dspace-sword/src/main/java/org/purl/sword/atom/Link.java +++ b/dspace-sword/src/main/java/org/purl/sword/atom/Link.java @@ -13,7 +13,7 @@ import java.util.Properties; import nu.xom.Attribute; import nu.xom.Element; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.purl.sword.base.Namespaces; import org.purl.sword.base.SwordElementInterface; import org.purl.sword.base.SwordValidationInfo; @@ -102,7 +102,7 @@ public class Link extends XmlElement implements SwordElementInterface { /** * The logger. */ - private static Logger log = Logger.getLogger(Link.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(Link.class); private static final XmlName XML_NAME = new XmlName( Namespaces.PREFIX_ATOM, "link", Namespaces.NS_ATOM); diff --git a/dspace-sword/src/main/java/org/purl/sword/atom/Source.java b/dspace-sword/src/main/java/org/purl/sword/atom/Source.java index 6b23d5429a..59d26c2ebb 100644 --- a/dspace-sword/src/main/java/org/purl/sword/atom/Source.java +++ b/dspace-sword/src/main/java/org/purl/sword/atom/Source.java @@ -13,7 +13,7 @@ import java.util.Properties; import nu.xom.Element; import nu.xom.Elements; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.purl.sword.base.Namespaces; import org.purl.sword.base.SwordElementInterface; import org.purl.sword.base.SwordValidationInfo; @@ -42,7 +42,7 @@ public class Source extends XmlElement implements SwordElementInterface { /** * The log. */ - private static Logger log = Logger.getLogger(Source.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(Source.class); /** * Create a new instance and set the prefix to diff --git a/dspace-sword/src/main/java/org/purl/sword/atom/TextConstruct.java b/dspace-sword/src/main/java/org/purl/sword/atom/TextConstruct.java index 98dee816ea..23005d78e8 100644 --- a/dspace-sword/src/main/java/org/purl/sword/atom/TextConstruct.java +++ b/dspace-sword/src/main/java/org/purl/sword/atom/TextConstruct.java @@ -13,7 +13,7 @@ import java.util.Properties; import nu.xom.Attribute; import nu.xom.Element; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.purl.sword.base.Namespaces; import org.purl.sword.base.SwordElementInterface; import org.purl.sword.base.SwordValidationInfo; @@ -43,7 +43,7 @@ public class TextConstruct extends XmlElement /** * The log. */ - private static Logger log = Logger.getLogger(TextConstruct.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(TextConstruct.class); /** * label for the type attribute. diff --git a/dspace-sword/src/main/java/org/purl/sword/base/BasicContentElement.java b/dspace-sword/src/main/java/org/purl/sword/base/BasicContentElement.java index 2ed1ba9400..f5604f3656 100644 --- a/dspace-sword/src/main/java/org/purl/sword/base/BasicContentElement.java +++ b/dspace-sword/src/main/java/org/purl/sword/base/BasicContentElement.java @@ -12,7 +12,7 @@ import java.util.List; import java.util.Properties; import nu.xom.Element; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; /** * Represents a text construct in the ATOM elements. This is a superclass of @@ -25,7 +25,7 @@ public abstract class BasicContentElement extends XmlElement /** * The log. */ - private static Logger log = Logger.getLogger(BasicContentElement.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(BasicContentElement.class); public BasicContentElement(String prefix, String name, String namespaceUri) { super(prefix, name, namespaceUri); diff --git a/dspace-sword/src/main/java/org/purl/sword/base/ChecksumUtils.java b/dspace-sword/src/main/java/org/purl/sword/base/ChecksumUtils.java index c2b2a6563a..ece4deeb90 100644 --- a/dspace-sword/src/main/java/org/purl/sword/base/ChecksumUtils.java +++ b/dspace-sword/src/main/java/org/purl/sword/base/ChecksumUtils.java @@ -13,7 +13,7 @@ import java.io.InputStream; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; /** * Utility class that holds Checksum related methods. @@ -25,7 +25,7 @@ public class ChecksumUtils { /** * Logger */ - private static Logger log = Logger.getLogger(ChecksumUtils.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(ChecksumUtils.class); /** * Default constructor diff --git a/dspace-sword/src/main/java/org/purl/sword/base/Collection.java b/dspace-sword/src/main/java/org/purl/sword/base/Collection.java index 34c2f3817d..cd78f27d50 100644 --- a/dspace-sword/src/main/java/org/purl/sword/base/Collection.java +++ b/dspace-sword/src/main/java/org/purl/sword/base/Collection.java @@ -15,7 +15,7 @@ import java.util.Properties; import nu.xom.Attribute; import nu.xom.Element; import nu.xom.Elements; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.purl.sword.atom.Accept; import org.purl.sword.atom.ContentType; import org.purl.sword.atom.Title; @@ -69,7 +69,7 @@ public class Collection extends XmlElement implements SwordElementInterface { /** * The logger. */ - private static Logger log = Logger.getLogger(Collection.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(Collection.class); /** * Label for the Href attribute. diff --git a/dspace-sword/src/main/java/org/purl/sword/base/Deposit.java b/dspace-sword/src/main/java/org/purl/sword/base/Deposit.java index 3c1e76a2f1..2473d28e4a 100644 --- a/dspace-sword/src/main/java/org/purl/sword/base/Deposit.java +++ b/dspace-sword/src/main/java/org/purl/sword/base/Deposit.java @@ -12,7 +12,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.servlet.http.HttpServletResponse; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; /** * Represents a deposit. @@ -20,7 +20,7 @@ import org.apache.log4j.Logger; * @author Stuart Lewis */ public class Deposit { - private static final Logger log = Logger.getLogger(Deposit.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(Deposit.class); /** * The File deposited diff --git a/dspace-sword/src/main/java/org/purl/sword/base/DepositResponse.java b/dspace-sword/src/main/java/org/purl/sword/base/DepositResponse.java index a731c020ed..453af3df35 100644 --- a/dspace-sword/src/main/java/org/purl/sword/base/DepositResponse.java +++ b/dspace-sword/src/main/java/org/purl/sword/base/DepositResponse.java @@ -16,7 +16,7 @@ import nu.xom.Document; import nu.xom.Element; import nu.xom.ParsingException; import nu.xom.Serializer; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; /** * Represents a deposit response. This holds the SWORD Entry element. @@ -43,7 +43,7 @@ public class DepositResponse { /** * Logger */ - private static Logger log = Logger.getLogger(DepositResponse.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(DepositResponse.class); /** * Create a new response with the specified http code. diff --git a/dspace-sword/src/main/java/org/purl/sword/base/Service.java b/dspace-sword/src/main/java/org/purl/sword/base/Service.java index c335aecf75..3edc86c14e 100644 --- a/dspace-sword/src/main/java/org/purl/sword/base/Service.java +++ b/dspace-sword/src/main/java/org/purl/sword/base/Service.java @@ -14,7 +14,7 @@ import java.util.Properties; import nu.xom.Element; import nu.xom.Elements; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.purl.sword.atom.Generator; @@ -47,7 +47,7 @@ public class Service extends XmlElement implements SwordElementInterface { /** * Logger */ - private static Logger log = Logger.getLogger(Service.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(Service.class); /** * MaxUploadSize diff --git a/dspace-sword/src/main/java/org/purl/sword/base/SwordAcceptPackaging.java b/dspace-sword/src/main/java/org/purl/sword/base/SwordAcceptPackaging.java index 6d063c6c7e..aa0a545d97 100644 --- a/dspace-sword/src/main/java/org/purl/sword/base/SwordAcceptPackaging.java +++ b/dspace-sword/src/main/java/org/purl/sword/base/SwordAcceptPackaging.java @@ -13,7 +13,7 @@ import java.util.Properties; import nu.xom.Attribute; import nu.xom.Element; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; /** * Represents a text construct in the ATOM elements. This is a superclass of @@ -36,7 +36,7 @@ public class SwordAcceptPackaging extends XmlElement /** * The log. */ - private static Logger log = Logger.getLogger(SwordAcceptPackaging.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(SwordAcceptPackaging.class); /** */ public static final String ELEMENT_NAME = "acceptPackaging"; diff --git a/dspace-sword/src/main/java/org/purl/sword/base/SwordContentPackageTypes.java b/dspace-sword/src/main/java/org/purl/sword/base/SwordContentPackageTypes.java index 814c91bb39..727372408c 100644 --- a/dspace-sword/src/main/java/org/purl/sword/base/SwordContentPackageTypes.java +++ b/dspace-sword/src/main/java/org/purl/sword/base/SwordContentPackageTypes.java @@ -11,14 +11,14 @@ import java.io.InputStream; import java.util.Enumeration; import java.util.Properties; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; /** * @author Neil Taylor (nst@aber.ac.uk) */ public class SwordContentPackageTypes { - private static Logger log = Logger.getLogger(SwordContentPackageTypes.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(SwordContentPackageTypes.class); private static Properties types; diff --git a/dspace-sword/src/main/java/org/purl/sword/base/Workspace.java b/dspace-sword/src/main/java/org/purl/sword/base/Workspace.java index 81964152ba..1f18167c95 100644 --- a/dspace-sword/src/main/java/org/purl/sword/base/Workspace.java +++ b/dspace-sword/src/main/java/org/purl/sword/base/Workspace.java @@ -14,7 +14,7 @@ import java.util.Properties; import nu.xom.Element; import nu.xom.Elements; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.purl.sword.atom.ContentType; import org.purl.sword.atom.Title; @@ -37,7 +37,7 @@ public class Workspace extends XmlElement implements SwordElementInterface { /** * The logger. */ - private static Logger log = Logger.getLogger(Workspace.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(Workspace.class); /** * Local name part of this element. diff --git a/dspace-sword/src/main/java/org/purl/sword/base/XmlElement.java b/dspace-sword/src/main/java/org/purl/sword/base/XmlElement.java index 6249c4290a..80217738d2 100644 --- a/dspace-sword/src/main/java/org/purl/sword/base/XmlElement.java +++ b/dspace-sword/src/main/java/org/purl/sword/base/XmlElement.java @@ -13,7 +13,7 @@ import java.util.Properties; import nu.xom.Attribute; import nu.xom.Element; import nu.xom.Node; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; /** * Parent class for all classes that represent an XML element. This provides @@ -27,7 +27,7 @@ public abstract class XmlElement { /** * Logger */ - private static Logger log = Logger.getLogger(XmlElement.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(XmlElement.class); /** diff --git a/dspace-sword/src/main/java/org/purl/sword/base/XmlName.java b/dspace-sword/src/main/java/org/purl/sword/base/XmlName.java index b6dff75281..da2430f452 100644 --- a/dspace-sword/src/main/java/org/purl/sword/base/XmlName.java +++ b/dspace-sword/src/main/java/org/purl/sword/base/XmlName.java @@ -9,8 +9,8 @@ package org.purl.sword.base; import nu.xom.Attribute; import nu.xom.Element; -import org.apache.commons.lang.StringUtils; -import org.apache.commons.lang.builder.HashCodeBuilder; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.builder.HashCodeBuilder; /** * @author Neil Taylor (nst@aber.ac.uk) diff --git a/dspace-sword/src/main/java/org/purl/sword/client/Client.java b/dspace-sword/src/main/java/org/purl/sword/client/Client.java index 4b4899e4f9..c6d335d8dd 100644 --- a/dspace-sword/src/main/java/org/purl/sword/client/Client.java +++ b/dspace-sword/src/main/java/org/purl/sword/client/Client.java @@ -31,7 +31,7 @@ import org.apache.http.entity.ContentType; import org.apache.http.entity.FileEntity; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.params.HttpParams; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.purl.sword.base.ChecksumUtils; import org.purl.sword.base.DepositResponse; import org.purl.sword.base.HttpHeaders; @@ -96,7 +96,7 @@ public class Client implements SWORDClient { /** * Logger. */ - private static final Logger log = Logger.getLogger(Client.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(Client.class); /** * Create a new Client. The client will not use authentication by default. diff --git a/dspace-sword/src/main/java/org/purl/sword/client/ClientFactory.java b/dspace-sword/src/main/java/org/purl/sword/client/ClientFactory.java index 0ae5cb3f26..00bd9c17a5 100644 --- a/dspace-sword/src/main/java/org/purl/sword/client/ClientFactory.java +++ b/dspace-sword/src/main/java/org/purl/sword/client/ClientFactory.java @@ -7,8 +7,6 @@ */ package org.purl.sword.client; -import org.apache.log4j.PropertyConfigurator; - /** * Entry point for the SWORD Demonstration Client. This will parse the list of * command line options and load either a Command Line client or a GUI client. @@ -16,18 +14,6 @@ import org.apache.log4j.PropertyConfigurator; * @author Neil Taylor */ public class ClientFactory { - - /** - * Create a new instance. - */ - public ClientFactory() { - // configure the logger from the property file. The GUI client will - // reload these properties if it is set to capture the output and - // display it in a panel. - PropertyConfigurator.configure(this.getClass().getClassLoader() - .getResource(ClientConstants.LOGGING_PROPERTY_FILE)); - } - /** * Generate a string that specifies the command line options for this * program. @@ -35,7 +21,7 @@ public class ClientFactory { * @return A list of the options for this program. */ public static String usage() { - StringBuffer buffer = new StringBuffer(); + StringBuilder buffer = new StringBuilder(); buffer.append("swordclient: version "); buffer.append(ClientConstants.CLIENT_VERSION); buffer.append("\n"); diff --git a/dspace-sword/src/main/java/org/purl/sword/client/ClientOptions.java b/dspace-sword/src/main/java/org/purl/sword/client/ClientOptions.java index 2f3c73d1e5..e085baeb78 100644 --- a/dspace-sword/src/main/java/org/purl/sword/client/ClientOptions.java +++ b/dspace-sword/src/main/java/org/purl/sword/client/ClientOptions.java @@ -13,7 +13,7 @@ import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; /** * List of options that are parsed from the command line. @@ -117,7 +117,7 @@ public class ClientOptions { /** * Logger. */ - private static Logger log = Logger.getLogger(ClientOptions.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(ClientOptions.class); /** * List of multiple destination items. Used if the mode is set to multipost. diff --git a/dspace-sword/src/main/java/org/purl/sword/client/CmdClient.java b/dspace-sword/src/main/java/org/purl/sword/client/CmdClient.java index f1f224fe8b..f747de5ffa 100644 --- a/dspace-sword/src/main/java/org/purl/sword/client/CmdClient.java +++ b/dspace-sword/src/main/java/org/purl/sword/client/CmdClient.java @@ -15,7 +15,7 @@ import java.net.URL; import java.util.Iterator; import java.util.List; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.purl.sword.atom.Author; import org.purl.sword.atom.Content; import org.purl.sword.atom.Contributor; @@ -54,7 +54,7 @@ public class CmdClient implements ClientType { /** * The logger. */ - private static Logger log = Logger.getLogger(CmdClient.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(CmdClient.class); /** * Create a new instance of the class and create an instance of the diff --git a/dspace-sword/src/main/java/org/purl/sword/server/DepositServlet.java b/dspace-sword/src/main/java/org/purl/sword/server/DepositServlet.java index 51b7bd2bcb..c272fc95f5 100644 --- a/dspace-sword/src/main/java/org/purl/sword/server/DepositServlet.java +++ b/dspace-sword/src/main/java/org/purl/sword/server/DepositServlet.java @@ -25,7 +25,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.codec.binary.Base64; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.purl.sword.atom.Summary; import org.purl.sword.atom.Title; import org.purl.sword.base.ChecksumUtils; @@ -73,7 +73,7 @@ public class DepositServlet extends HttpServlet { /** * Logger */ - private static final Logger log = Logger.getLogger(DepositServlet.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(DepositServlet.class); /** * Initialise the servlet. diff --git a/dspace-sword/src/main/java/org/purl/sword/server/DummyServer.java b/dspace-sword/src/main/java/org/purl/sword/server/DummyServer.java index c7c2f49dcc..2dc9b3b7e2 100644 --- a/dspace-sword/src/main/java/org/purl/sword/server/DummyServer.java +++ b/dspace-sword/src/main/java/org/purl/sword/server/DummyServer.java @@ -17,7 +17,7 @@ import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; import javax.servlet.http.HttpServletResponse; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.purl.sword.atom.Author; import org.purl.sword.atom.Content; import org.purl.sword.atom.Contributor; @@ -62,7 +62,7 @@ public class DummyServer implements SWORDServer { /** * Logger */ - private static Logger log = Logger.getLogger(ServiceDocumentServlet.class); + private static Logger log = org.apache.logging.log4j.LogManager.getLogger(ServiceDocumentServlet.class); /** * Provides a dumb but plausible service document - it contains diff --git a/dspace-sword/src/main/java/org/purl/sword/server/ServiceDocumentServlet.java b/dspace-sword/src/main/java/org/purl/sword/server/ServiceDocumentServlet.java index bb43850ef6..28c309b2ca 100644 --- a/dspace-sword/src/main/java/org/purl/sword/server/ServiceDocumentServlet.java +++ b/dspace-sword/src/main/java/org/purl/sword/server/ServiceDocumentServlet.java @@ -16,7 +16,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.codec.binary.Base64; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; import org.purl.sword.base.HttpHeaders; import org.purl.sword.base.SWORDAuthenticationException; import org.purl.sword.base.SWORDErrorException; @@ -49,7 +49,7 @@ public class ServiceDocumentServlet extends HttpServlet { /** * Logger */ - private static final Logger log = Logger.getLogger(ServiceDocumentServlet.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(ServiceDocumentServlet.class); /** * Initialise the servlet. diff --git a/dspace-sword/src/main/webapp/WEB-INF/web.xml b/dspace-sword/src/main/webapp/WEB-INF/web.xml index 733de69745..14b873ccd9 100644 --- a/dspace-sword/src/main/webapp/WEB-INF/web.xml +++ b/dspace-sword/src/main/webapp/WEB-INF/web.xml @@ -8,35 +8,37 @@ http://www.dspace.org/license/ --> - - + DSpace SWORD Server + The location of the DSpace home directory dspace.dir ${dspace.dir} - - The location of the DSpace home directory - + The SWORDServer class name sword-server-class org.dspace.sword.DSpaceSWORDServer + + + + log4jConfiguration + ${dspace.dir}/config/log4j2.xml - The SWORDServer class name + The location of the Log4J configuration + The type of authentication used : [Basic|None] authentication-method Basic - - The type of authentication used : [Basic|None] - - - - + DSpace SWORD 2.0 Server + The location of the DSpace home directory dspace.dir ${dspace.dir} - - The location of the DSpace home directory - + The ServiceDocumentManager server implementation class name service-document-impl org.dspace.sword2.ServiceDocumentManagerDSpace + + + + log4jConfiguration + ${dspace.dir}/config/log4j2.xml - The ServiceDocumentManager server implementation class name + The location of the Log4J configuration - + + The CollectionListManager server implementation class name collection-list-impl org.dspace.sword2.CollectionListManagerDSpace - - The CollectionListManager server implementation class name - + The CollectionDepositManager server implementation class name collection-deposit-impl org.dspace.sword2.CollectionDepositManagerDSpace - - The CollectionDepositManager server implementation class name - + The MediaResourceManager server implementation class name media-resource-impl org.dspace.sword2.MediaResourceManagerDSpace - - The MediaResourceManager server implementation class name - + The ContainerManager server implementation class name container-impl org.dspace.sword2.ContainerManagerDSpace - - The ContainerManager server implementation class name - + The StatementManager server implementation class name statement-impl org.dspace.sword2.StatementManagerDSpace - - The StatementManager server implementation class name - + The SwordConfiguration server implementation class name config-impl org.dspace.sword2.SwordConfigurationDSpace - - The SwordConfiguration server implementation class name - + The type of authentication used : [Basic|None] authentication-method Basic - - The type of authentication used : [Basic|None] - -

- - -
- - - + https://commons.apache.org/proper/commons-configuration/userguide/howto_basicfeatures.html#Variable_Interpolation --> + - + - - - - + + - - - - + + - + diff --git a/dspace/config/dspace.cfg b/dspace/config/dspace.cfg index 5f223e67bf..2bf3794b04 100644 --- a/dspace/config/dspace.cfg +++ b/dspace/config/dspace.cfg @@ -169,10 +169,10 @@ mail.allowed.referrers = ${dspace.hostname} ##### Logging configuration ##### # Override default log4j configuration file # You may provide your own configuration here, existing alternatives are: -# log.init.config = ${dspace.dir}/config/log4j-console.properties -log.init.config = ${dspace.dir}/config/log4j.properties +# log.init.config = ${dspace.dir}/config/log4j2-console.xml +log.init.config = ${dspace.dir}/config/log4j2.xml -# All other log4j settings moved to config/log4j.properties +# All other log4j settings moved to config/log4j2.xml ##### DOI registration agency credentials ###### # To mint DOIs you have to use a DOI registration agency like DataCite. Several @@ -331,7 +331,19 @@ http.proxy.port = # If enabled, the logging and the Solr statistics system will look for # an X-Forwarded-For header. If it finds it, it will use this for the user IP address -useProxies = false +# Note that server-side rendered Angular UI requests always present the X-Forwarded-For header +# with the original client IP address. +useProxies = true + +# If "useProxies" is enabled, the authentication and statistics logging code will read the X-Forwarded-For header in +# order to determine the correct client IP address. But they will only use that header value when the request is coming +# from a trusted proxy server location (e.g. HTTPD on localhost). Leave this property empty to trust X-Forwarded-For +# values of all requests. You can specify a range by only listing the first three ip-address blocks, e.g. 128.177.243 +# You can list multiple IP addresses or ranges by comma-separating them. +# If you are running REST & UI on different servers, you should add the UI servers (range) as a proxy. +# For example : proxies.trusted.ipranges = 127.0.0.1, 192.168.2 +# This is necessary because Angular Universal will also behave as a proxy server. +proxies.trusted.ipranges = 127.0.0.1 #### Media Filter / Format Filter plugins (through PluginService) #### # Media/Format Filters help to full-text index content or @@ -358,8 +370,7 @@ filter.plugins = PDFBox JPEG Thumbnail #Assign 'human-understandable' names to each filter plugin.named.org.dspace.app.mediafilter.FormatFilter = org.dspace.app.mediafilter.PDFFilter = PDF Text Extractor plugin.named.org.dspace.app.mediafilter.FormatFilter = org.dspace.app.mediafilter.HTMLFilter = HTML Text Extractor -plugin.named.org.dspace.app.mediafilter.FormatFilter = org.dspace.app.mediafilter.WordFilter = Word Text Extractor -#plugin.named.org.dspace.app.mediafilter.FormatFilter = org.dspace.app.mediafilter.PoiWordFilter = Word Text Extractor +plugin.named.org.dspace.app.mediafilter.FormatFilter = org.dspace.app.mediafilter.PoiWordFilter = Word Text Extractor plugin.named.org.dspace.app.mediafilter.FormatFilter = org.dspace.app.mediafilter.ExcelFilter = Excel Text Extractor plugin.named.org.dspace.app.mediafilter.FormatFilter = org.dspace.app.mediafilter.PowerPointFilter = PowerPoint Text Extractor plugin.named.org.dspace.app.mediafilter.FormatFilter = org.dspace.app.mediafilter.JPEGFilter = JPEG Thumbnail @@ -371,7 +382,6 @@ plugin.named.org.dspace.app.mediafilter.FormatFilter = org.dspace.app.mediafilte #Configure each filter's input format(s) filter.org.dspace.app.mediafilter.PDFFilter.inputFormats = Adobe PDF filter.org.dspace.app.mediafilter.HTMLFilter.inputFormats = HTML, Text -filter.org.dspace.app.mediafilter.WordFilter.inputFormats = Microsoft Word filter.org.dspace.app.mediafilter.PoiWordFilter.inputFormats = Microsoft Word, Microsoft Word XML filter.org.dspace.app.mediafilter.PowerPointFilter.inputFormats = Microsoft Powerpoint, Microsoft Powerpoint XML filter.org.dspace.app.mediafilter.JPEGFilter.inputFormats = BMP, GIF, JPEG, image/png diff --git a/dspace/config/launcher.xml b/dspace/config/launcher.xml index 834aabf42a..4c2afcdca4 100644 --- a/dspace/config/launcher.xml +++ b/dspace/config/launcher.xml @@ -242,6 +242,13 @@ reindex + + solr-upgrade-statistics-6x + Upgrade statistics (integer to UUID) to DSpace 6.x (or above) compatibility + + org.dspace.util.SolrUpgradePre6xStatistics + + stat-general Compile the general statistics diff --git a/dspace/config/log4j-console.properties b/dspace/config/log4j-console.properties deleted file mode 100644 index 5a52df7c5b..0000000000 --- a/dspace/config/log4j-console.properties +++ /dev/null @@ -1,23 +0,0 @@ -############################################################# -# log4j-console.properties -# -# Simple log4j configuration file used during Ant build tasks -# -# Its goal is to simply output logs to the commandline / console. -############################################################# - -# Set root category priority to WARN and its only appender to A1. -# For commandline / ant scripts, we are only concerned about significant warnings/errors -# For the full detail, change this to INFO and re-run Ant. -log4j.rootCategory=WARN, A1 - -# A1 is set to be a ConsoleAppender. -log4j.appender.A1=org.apache.log4j.ConsoleAppender - -# A1 uses PatternLayout. -log4j.appender.A1.layout=org.apache.log4j.PatternLayout -log4j.appender.A1.layout.ConversionPattern=%d %-5p %c @ %m%n - -# block passwords from being exposed in Axis logs. -# (DEBUG exposes passwords in Basic Auth) -log4j.logger.org.apache.axis.handlers.http.HTTPAuthHandler=INFO diff --git a/dspace/config/log4j-handle-plugin.properties b/dspace/config/log4j-handle-plugin.properties index 44d39fb1bd..72381a698c 100644 --- a/dspace/config/log4j-handle-plugin.properties +++ b/dspace/config/log4j-handle-plugin.properties @@ -20,12 +20,12 @@ log.dir=${dspace.dir}/log log4j.rootCategory=INFO, A1 # A1 is set to be a DailyRollingFileAppender. -log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender +log4j.appender.A1=org.apache.logging.log4j.DailyRollingFileAppender log4j.appender.A1.File=${log.dir}/handle-plugin.log log4j.appender.A1.DatePattern='.'yyyy-MM-dd # A1 uses PatternLayout. -log4j.appender.A1.layout=org.apache.log4j.PatternLayout +log4j.appender.A1.layout=org.apache.logging.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%d %-5p %c @ %m%n diff --git a/dspace/config/log4j-solr.properties b/dspace/config/log4j-solr.properties deleted file mode 100644 index c94e384d81..0000000000 --- a/dspace/config/log4j-solr.properties +++ /dev/null @@ -1,44 +0,0 @@ -########################################################################### -# log4j-solr.properties -# -# This is the log4j configuration file for the Solr webapp that comes bundled -# with DSpace. Because Solr is a dependency, its log4j settings are kept -# separate from the default DSpace log4j settings (in log4j.properties). -# -# Therefore, this log4j file is standalone. If you wish to tweak the location of -# your Solr logs, you must do so within this file. -########################################################################### - -# VARIABLES: -# The following variables can be used to easily tweak the default log4j settings. -# These variables are used by the log4j config / appenders later in this file. - -# log.dir -# Default log file directory for DSpace. Defaults to the 'log' subdirectory -# under [dspace.dir]. NOTE: The value of 'dspace.dir' will be replaced by -# its value in your configuration when DSpace is deployed (via Ant). -log.dir=${dspace.dir}/log - -# Logging level for Solr -log4j.rootLogger=INFO, file - -# Console logging options. Switch the above from "file" to "CONSOLE" to enable -log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender -log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout -log4j.appender.CONSOLE.layout.ConversionPattern=%-4r [%t] %-5p %c %x \u2013 %m%n - -#- size rotation with log cleanup. -log4j.appender.file=org.apache.log4j.DailyRollingFileAppender -# Set this to yyyy-MM-DD for daily log files, or yyyy-MM for monthly files -log4j.appender.file.DatePattern='.'yyyy-MM-dd - -#- File to log to and log format -log4j.appender.file.File=${log.dir}/solr.log -log4j.appender.file.layout=org.apache.log4j.PatternLayout -log4j.appender.file.layout.ConversionPattern=%d %-5p %c @ %m%n - -log4j.logger.org.apache.zookeeper=WARN -log4j.logger.org.apache.hadoop=WARN - -# set to INFO to enable infostream log messages -log4j.logger.org.apache.solr.update.LoggingInfoStream=OFF diff --git a/dspace/config/log4j.properties b/dspace/config/log4j.properties deleted file mode 100644 index 5acdacd310..0000000000 --- a/dspace/config/log4j.properties +++ /dev/null @@ -1,95 +0,0 @@ -########################################################################### -# log4j.properties -# -# This is the primary log4j (logging) configuration file for DSpace. By default, -# Log4j is configured to write log files that rotate daily. However, you may -# tweak these settings based on your local needs / best practices. -# For more information on log4j configuration, see: -# https://logging.apache.org/log4j/1.2/manual.html -########################################################################### - -# VARIABLES: -# The following variables can be used to easily tweak the default log4j settings. -# These variables are used by the log4j config / appenders later in this file. - -# log.dir -# Default log file directory for DSpace. Defaults to the 'log' subdirectory -# under [dspace.dir]. NOTE: The value of 'dspace.dir' will be replaced by -# its value in your configuration when DSpace is deployed (via Ant). -log.dir=${dspace.dir}/log - -# loglevel.dspace -# Log level for all DSpace-specific code (org.dspace.*) -# Possible values (from most to least info): DEBUG, INFO, WARN, ERROR, FATAL -# Defaults to INFO -loglevel.dspace=INFO - -# loglevel.other -# Log level for other third-party tools/APIs used by DSpace -# Possible values (from most to least info): DEBUG, INFO, WARN, ERROR, FATAL -# Defaults to INFO -loglevel.other=INFO - - -########################################################################### -# A1 is the name of the appender for most DSpace activity. -########################################################################### -# The root category is the default setting for all non-DSpace code. -# Change this from INFO to DEBUG to see extra logging created by non-DSpace -# code. -log4j.rootCategory=${loglevel.other}, A1 -# This line sets the logging level for DSpace code. Set this to DEBUG to see -# extra detailed logging for DSpace code. -log4j.logger.org.dspace=${loglevel.dspace}, A1 - -# Do not change these "additivity" lines -log4j.additivity.org.dspace=false - -# The name of the file appender -log4j.appender.A1=org.dspace.app.util.DailyFileAppender -# The filename of the log file created. A date stamp is appended to this -log4j.appender.A1.File=${log.dir}/dspace.log -# Set this to yyyy-MM-DD for daily log files, or yyyy-MM for monthly files -log4j.appender.A1.DatePattern=yyyy-MM-dd -# The number of log files to keep, or 0 to keep them all -log4j.appender.A1.MaxLogs=0 -# A1 uses PatternLayout. -log4j.appender.A1.layout=org.apache.log4j.PatternLayout -log4j.appender.A1.layout.ConversionPattern=%d %-5p %c @ %m%n - - -########################################################################### -# A2 is the name of the appender for the Checksum Checker -########################################################################### -# This line sets the logging level for the checksum checker log file. -# Set this to DEBUG to see extra detailed logging. -log4j.logger.org.dspace.checker=INFO, A2 -# Do not change this line -log4j.additivity.org.dspace.checker=false -# The name of the file appender -log4j.appender.A2=org.dspace.app.util.DailyFileAppender -# The filename of the log file created. A date stamp is appended to this -log4j.appender.A2.File=${log.dir}/checker.log -# Set this to yyyy-MM-DD for daily log files, or yyyy-MM for monthly files -log4j.appender.A2.DatePattern=yyyy-MM-dd -# The number of log files to keep, or 0 to keep them all -log4j.appender.A2.MaxLogs=0 -# A2 uses PatternLayout. -log4j.appender.A2.layout=org.apache.log4j.PatternLayout -log4j.appender.A2.layout.ConversionPattern=%m%n - - -########################################################################### -# Other settings -########################################################################### - -# Block passwords from being exposed in Axis logs. -# (DEBUG exposes passwords in Basic Auth) -log4j.logger.org.apache.axis.handlers.http.HTTPAuthHandler=INFO - -# Block services logging except on exceptions -log4j.logger.org.dspace.kernel=ERROR -log4j.logger.org.dspace.services=ERROR -log4j.logger.org.dspace.servicemanager=ERROR -log4j.logger.org.dspace.providers=ERROR -log4j.logger.org.dspace.utils=ERROR diff --git a/dspace/config/log4j2-console.xml b/dspace/config/log4j2-console.xml new file mode 100644 index 0000000000..db2998f6be --- /dev/null +++ b/dspace/config/log4j2-console.xml @@ -0,0 +1,32 @@ + + + + + + ${log4j:configParentLocation}/../log + + + + + + + + + + + + + + + diff --git a/dspace/config/log4j2-solr.xml b/dspace/config/log4j2-solr.xml new file mode 100644 index 0000000000..1e32365263 --- /dev/null +++ b/dspace/config/log4j2-solr.xml @@ -0,0 +1,40 @@ + + + + + + ${log4j:configParentLocation}/../log + + + + + + + yyyy-MM-dd + + + + + + + + + + + + + + + diff --git a/dspace/config/log4j2.xml b/dspace/config/log4j2.xml new file mode 100644 index 0000000000..98a0300125 --- /dev/null +++ b/dspace/config/log4j2.xml @@ -0,0 +1,91 @@ + + + + + + ${log4j:configParentLocation}/../log + + + INFO + + + INFO + + + + + + + + yyyy-MM-dd + + + + + + + + + yyyy-MM-dd + + + + + + + + + + + + + + + + + + + + + # Block services logging except on exceptions + + + + + + + # Block passwords from being exposed in Axis logs. + # (DEBUG exposes passwords in Basic Auth) + + + diff --git a/dspace/config/spring/api/core-services.xml b/dspace/config/spring/api/core-services.xml index 4cabc4dcfb..f9c9b30ca3 100644 --- a/dspace/config/spring/api/core-services.xml +++ b/dspace/config/spring/api/core-services.xml @@ -98,6 +98,7 @@ + @@ -118,6 +119,10 @@ --> + @@ -143,9 +148,18 @@ + + @@ -159,23 +173,29 @@ + - + orgunit.identifier.name - - , - + @@ -191,29 +211,31 @@ - + + orgunit.identifier.name - - , - - + orgunit.identifier.name - - , - @@ -221,16 +243,32 @@ - + + journalvolume.identifier.volume - - , - + @@ -247,25 +285,19 @@ - + journal.identifier.issn - - , - - + journal.identifier.name - - , - @@ -274,15 +306,12 @@ - + journalissue.identifier.number - - , - @@ -291,6 +320,18 @@ + + diff --git a/dspace/modules/additions/pom.xml b/dspace/modules/additions/pom.xml index ebc3963a0a..d02b33a8b9 100644 --- a/dspace/modules/additions/pom.xml +++ b/dspace/modules/additions/pom.xml @@ -58,7 +58,7 @@
javax.servlet - servlet-api + javax.servlet-api provided diff --git a/dspace/modules/oai/pom.xml b/dspace/modules/oai/pom.xml index 2dc97f96bc..e36adfafcc 100644 --- a/dspace/modules/oai/pom.xml +++ b/dspace/modules/oai/pom.xml @@ -127,13 +127,15 @@ javax.servlet - servlet-api + javax.servlet-api provided + com.lyncode @@ -146,6 +148,14 @@ + + + + + org.hamcrest + hamcrest-all + compile + diff --git a/dspace/modules/rdf/pom.xml b/dspace/modules/rdf/pom.xml index 5a5ab808bf..297d165a6d 100644 --- a/dspace/modules/rdf/pom.xml +++ b/dspace/modules/rdf/pom.xml @@ -104,7 +104,7 @@
javax.servlet - servlet-api + javax.servlet-api provided diff --git a/dspace/modules/rest/pom.xml b/dspace/modules/rest/pom.xml index 636adc7e18..4b9c4a2a24 100644 --- a/dspace/modules/rest/pom.xml +++ b/dspace/modules/rest/pom.xml @@ -143,7 +143,7 @@ javax.servlet - servlet-api + javax.servlet-api provided diff --git a/dspace/modules/solr/pom.xml b/dspace/modules/solr/pom.xml index d84c1a4a51..ff0927727a 100644 --- a/dspace/modules/solr/pom.xml +++ b/dspace/modules/solr/pom.xml @@ -130,6 +130,10 @@ org.apache.zookeeper zookeeper + + log4j + log4j + diff --git a/dspace/modules/sword/pom.xml b/dspace/modules/sword/pom.xml index 3ed2e4cc10..a8498483ce 100644 --- a/dspace/modules/sword/pom.xml +++ b/dspace/modules/sword/pom.xml @@ -121,7 +121,7 @@ javax.servlet - servlet-api + javax.servlet-api provided diff --git a/dspace/modules/swordv2/pom.xml b/dspace/modules/swordv2/pom.xml index 63ef48427d..11f0b684b5 100644 --- a/dspace/modules/swordv2/pom.xml +++ b/dspace/modules/swordv2/pom.xml @@ -135,7 +135,7 @@ javax.servlet - servlet-api + javax.servlet-api provided diff --git a/dspace/pom.xml b/dspace/pom.xml index 3780d02fa0..9c22c27523 100644 --- a/dspace/pom.xml +++ b/dspace/pom.xml @@ -321,7 +321,7 @@ command. --> javax.servlet - servlet-api + javax.servlet-api diff --git a/dspace/solr/statistics/conf/schema.xml b/dspace/solr/statistics/conf/schema.xml index 6386beee53..428ade7fc5 100644 --- a/dspace/solr/statistics/conf/schema.xml +++ b/dspace/solr/statistics/conf/schema.xml @@ -286,19 +286,19 @@ --> - + - + - - - + + + @@ -313,7 +313,7 @@ - + @@ -323,8 +323,8 @@ - - + + diff --git a/dspace/src/main/config/build.xml b/dspace/src/main/config/build.xml index ec4782aa5d..ab13191561 100644 --- a/dspace/src/main/config/build.xml +++ b/dspace/src/main/config/build.xml @@ -354,6 +354,7 @@ Common usage: to its log files. In addition, log4j strongly prefers autoconfiguring itself (e.g. see DS-3104). --> + @@ -780,8 +781,12 @@ Common usage: - - + + @@ -955,7 +960,8 @@ You may manually install this file by following these steps: - + @@ -1044,7 +1050,8 @@ You may manually install this file by following these steps: Checking if the Solr index at ${indexDir} is >= Solr ${version} - + @@ -1153,8 +1160,10 @@ For more information, please see the Upgrade Instructions. Upgrading the Solr index in ${indexDir}. Depending on the index size, this may take a while (please be patient)... - - + + @@ -1168,8 +1177,10 @@ For more information, please see the Upgrade Instructions. Upgrading the Solr index in ${indexDir}. Depending on the index size, this may take a while (please be patient)... - - + + diff --git a/pom.xml b/pom.xml index 88dfeec6d0..585cccda45 100644 --- a/pom.xml +++ b/pom.xml @@ -27,7 +27,8 @@ 3.17 42.2.1 4.10.4 - 2.13.0 + 2.13.0 + 2.6.2 1.7.22 2.8.11 2.26 @@ -150,6 +151,8 @@ true + + false @@ -432,7 +435,7 @@ - -Xmx512m + -Xmx1024m @@ -1101,7 +1104,7 @@ - spring-jdbc + spring-jdbc org.springframework ${spring.version} @@ -1144,16 +1147,12 @@ mets 1.5.2 - - org.dspace.dependencies - dspace-tm-extractors - 1.0.1 - + commons-beanutils commons-beanutils - 1.9.2 + 1.9.3 commons-cli @@ -1179,9 +1178,9 @@ 3.2.2 - commons-configuration - commons-configuration - 1.10 + org.apache.commons + commons-configuration2 + 2.3 org.apache.commons @@ -1204,10 +1203,9 @@ 2.4 - commons-lang - commons-lang - 2.6 - + org.apache.commons + commons-lang3 + 3.7 commons-logging @@ -1236,8 +1234,8 @@ javax.servlet - servlet-api - 2.5 + javax.servlet-api + 3.1.0 @@ -1256,11 +1254,33 @@ jdom 1.1.3 + - log4j - log4j - 1.2.17 + org.apache.logging.log4j + log4j-api + ${log4j.version} + + org.apache.logging.log4j + log4j-1.2-api + ${log4j.version} + + + org.apache.logging.log4j + log4j-core + ${log4j.version} + + + org.apache.logging.log4j + log4j-web + ${log4j.version} + + + org.apache.logging.log4j + log4j-slf4j-impl + ${log4j.version} + + oro oro