Skip to content

Commit

Permalink
Rename HistorisedAttachmentServiceIT to HistorizedAttachmentServiceIT
Browse files Browse the repository at this point in the history
Add new index definition entries for Apache Jackrabbit Oak and rename
index names.
Improve the clean of the JCR repository in the JcrContext Junit 4 rule:
only the node nt:folder under the root node are removed; by this way, a
bug in the tests in core-library using the JCR has been fixed (the index
in the JCR are well kept for the whole running tests).
  • Loading branch information
mmoqui committed Jun 29, 2023
1 parent 9e81e28 commit c53d489
Show file tree
Hide file tree
Showing 8 changed files with 40 additions and 35 deletions.
Expand Up @@ -33,6 +33,7 @@
import org.silverpeas.core.jcr.SilverpeasRepository;
import org.silverpeas.core.jcr.util.SilverpeasJCRIndexation;
import org.silverpeas.core.jcr.util.SilverpeasProperty;
import org.silverpeas.core.util.logging.SilverLogger;

import javax.inject.Inject;
import javax.inject.Singleton;
Expand All @@ -55,15 +56,21 @@ public class JCRIndexDefinitionCreation implements SilverpeasJCRIndexation {
@Override
public void initialize() {
if (repository instanceof OakRepository) {
SilverLogger.getLogger(this).info("Initialize indexation in JCR...");
NodeBuilder indexRoot = getIndexRoot();
Properties indexDefs = loadIndexDefinitions();
indexDefs.forEach((key, value) -> {
String name = (String) key;
String properties = (String) value;
String[] np = Arrays.stream(properties.split(" ")).map(String::trim).toArray(String[]::new);
if (!indexRoot.hasChildNode(name)) {
IndexUtils.createIndexDefinition(indexRoot, name, true, false, Arrays.asList(np),
String prop = np.length > 1 ? "properties " : "property ";
SilverLogger.getLogger(this).info("Create index " + name + " on " + prop +
String.join(" and ", np));
IndexUtils.createIndexDefinition(indexRoot, name, false, false, Arrays.asList(np),
List.of(SilverpeasProperty.SLV_SIMPLE_DOCUMENT));
} else {
SilverLogger.getLogger(this).info("Index " + name + " already created");
}
});
}
Expand Down
20 changes: 10 additions & 10 deletions core-jcr/src/main/resources/silverpeas-oak-index.properties
Expand Up @@ -6,13 +6,13 @@
# - the property value: a space-separated list of JCR node properties to index
#

name = slv:name
description = slv:description
nameAndDescription = slv:name slv:description
oldSilverpeasId = slv:oldSilverpeasId
foreignKey = slv:foreignKey
owner = slv:owner
expiryDate = slv:expiryDate
alertDate = slv:alertDate
order = slv:order
versioned = slv:versioned
indexByName = slv:name
indexByDescription = slv:description
indexByNameAndDescription = slv:name slv:description
indexByOldSilverpeasId = slv:oldSilverpeasId
indexByForeignKey = slv:foreignKey
indexByOwner = slv:owner
indexByOldSilverpeasIdAndVersioned = slv:oldSilverpeasId slv:versioned
indexByExpiryDate = slv:expiryDate slv:order
indexByAlertDate = slv:alertDate slv:order
indexByForeignKeyAndOrder = slv:foreignKey slv:order
Expand Up @@ -70,7 +70,7 @@
* @author ehugonnet
*/
@RunWith(Arquillian.class)
public class HistorisedAttachmentServiceIT extends JcrIntegrationIT {
public class HistorizedAttachmentServiceIT extends JcrIntegrationIT {

private static final String instanceId = "kmelia974";
private SimpleDocumentPK existingFrDoc;
Expand All @@ -82,7 +82,7 @@ public class HistorisedAttachmentServiceIT extends JcrIntegrationIT {

@Deployment
public static Archive<?> createTestArchive() {
return WarBuilder4LibCore.onWarForTestClass(HistorisedAttachmentServiceIT.class)
return WarBuilder4LibCore.onWarForTestClass(HistorizedAttachmentServiceIT.class)
.addJcrFeatures()
.addPublicationTemplateFeatures()
.addSchedulerFeatures()
Expand Down
Expand Up @@ -47,6 +47,7 @@
import org.silverpeas.core.util.DateUtil;
import org.silverpeas.core.util.MimeTypes;
import org.silverpeas.core.util.Pair;
import org.silverpeas.core.util.annotation.TimeMeasuring;
import org.silverpeas.core.util.file.FileRepositoryManager;
import org.silverpeas.core.jcr.JCRSession;

Expand Down
Expand Up @@ -34,30 +34,20 @@
import org.silverpeas.core.contribution.attachment.model.SimpleDocument;
import org.silverpeas.core.contribution.attachment.model.SimpleDocumentPK;
import org.silverpeas.core.index.indexing.IndexFileManager;
import org.silverpeas.core.jcr.util.SilverpeasJCRSchemaRegister;
import org.silverpeas.core.jcr.JCRSession;
import org.silverpeas.core.util.Charsets;
import org.silverpeas.core.util.ServiceProvider;
import org.silverpeas.core.util.StringUtil;
import org.silverpeas.core.util.file.FileRepositoryManager;
import org.silverpeas.core.jcr.JCRSession;

import javax.jcr.Binary;
import javax.jcr.Node;
import javax.jcr.NodeIterator;
import javax.jcr.Property;
import javax.jcr.RepositoryException;
import javax.jcr.*;
import javax.jcr.nodetype.NodeType;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.InputStream;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.*;

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.*;
Expand Down Expand Up @@ -87,10 +77,12 @@ public void evaluate() throws Throwable {

private void clearJcrRepository() throws RepositoryException {
try (JCRSession session = JCRSession.openSystemSession()) {
System.out.println("CLEAR JCR REPOSITORY CONTENT...");
NodeIterator i = session.getRootNode().getNodes();
while(i.hasNext()) {
Node node = i.nextNode();
if (!"jcr:system".equals(node.getName())) {
if (node.getPrimaryNodeType().isNodeType(NodeType.NT_FOLDER)) {
System.out.println("REMOVE NODE " + node.getName());
node.remove();
}
}
Expand Down
Expand Up @@ -30,6 +30,7 @@
import org.silverpeas.core.contribution.attachment.process.SimpleDocumentDummyHandledFileConverter;
import org.silverpeas.core.contribution.attachment.repository.JcrContext;
import org.silverpeas.core.contribution.attachment.util.AttachmentSettings;
import org.silverpeas.core.jcr.JCRSession;
import org.silverpeas.core.test.integration.rule.DbSetupRule;
import org.silverpeas.core.test.integration.rule.MavenTargetDirectoryRule;
import org.silverpeas.core.test.unit.extention.SettingBundleStub;
Expand Down
Expand Up @@ -9,7 +9,10 @@ INSERT INTO st_domain (id, name, propFilename, className, authenticationServer,
* users
*/
INSERT INTO st_user (id, domainId, specificId, lastName, login, accessLevel, state, stateSaveDate)
VALUES (1, 0, '1', 'Administrateur', 'SilverAdmin', 'A', 'VALID', '2012-01-01 00:00:00.000');
VALUES (0, 0, '0', 'Administrateur', 'SilverAdmin', 'A', 'VALID', '2012-01-01 00:00:00.000');

INSERT INTO st_user (id, domainId, specificId, lastName, login, accessLevel, state, stateSaveDate)
VALUES (1, 0, '1', 'Toto', 'toto', 'U', 'VALID', '2012-01-01 00:00:00.000');

INSERT INTO st_user (id, domainId, specificId, lastName, login, accessLevel, state, stateSaveDate)
VALUES (2, 0, '2', 'SimpleUser', 'SimpleUser', 'U', 'VALID', '2012-01-01 00:00:00.000');
Expand All @@ -28,7 +31,8 @@ INSERT INTO st_group (id, domainId, specificId, name, state, stateSaveDate)
/**
* users in the default Silverpeas domain
*/
INSERT INTO domainsp_user (id, lastName, login) VALUES (1, 'Administrateur', 'SilverAdmin');
INSERT INTO domainsp_user (id, lastName, login) VALUES (0, 'Administrateur', 'SilverAdmin');
INSERT INTO domainsp_user (id, lastName, login) VALUES (1, 'Toto', 'toto');
INSERT INTO domainsp_user (id, lastName, login) VALUES (2, 'SimpleUser', 'SimpleUser');
INSERT INTO domainsp_user (id, lastName, login) VALUES (3, 'Hetfield', 'Hetfield');

Expand Down
Expand Up @@ -926,11 +926,11 @@ private NodeIterator getNodeIteratorByDateProperty(final Session session,
final String slvPropertyDate, final Date date) throws RepositoryException {
QueryManager manager = session.getWorkspace().getQueryManager();
QueryObjectModelFactory factory = manager.getQOMFactory();
Calendar expiry = Calendar.getInstance();
expiry.setTime(DateUtil.getBeginOfDay(date));
Calendar calendarDate = Calendar.getInstance();
calendarDate.setTime(DateUtil.getBeginOfDay(date));
Selector source = factory.selector(SLV_SIMPLE_DOCUMENT, SIMPLE_DOCUMENT_ALIAS);
return getNodeIteratorByProperty(factory, source, slvPropertyDate,
session.getValueFactory().createValue(expiry));
session.getValueFactory().createValue(calendarDate));
}

private NodeIterator getNodeIteratorByProperty(final QueryObjectModelFactory factory,
Expand Down Expand Up @@ -981,12 +981,12 @@ NodeIterator selectDocumentsRequiringUnlocking(Session session, Date expiryDate)
Calendar expiry = Calendar.getInstance();
expiry.setTime(DateUtil.getBeginOfDay(expiryDate));
Selector source = factory.selector(SLV_SIMPLE_DOCUMENT, SIMPLE_DOCUMENT_ALIAS);
Comparison foreignIdComparison = getComparison(factory, SLV_PROPERTY_EXPIRY_DATE,
Comparison expiryDateComparison = getComparison(factory, SLV_PROPERTY_EXPIRY_DATE,
QueryObjectModelConstants.JCR_OPERATOR_LESS_THAN,
session.getValueFactory().createValue(expiry));
Ordering order = factory.ascending(
factory.propertyValue(SIMPLE_DOCUMENT_ALIAS, SLV_PROPERTY_ORDER));
QueryObjectModel query = factory.createQuery(source, foreignIdComparison, new Ordering[]{order},
QueryObjectModel query = factory.createQuery(source, expiryDateComparison, new Ordering[]{order},
null);
QueryResult result = query.execute();
return result.getNodes();
Expand Down

0 comments on commit c53d489

Please sign in to comment.