You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 10:23:30 UTC
[sling-org-apache-sling-testing-sling-mock] 14/37: SLING-5064
sling-mock: Register JCR node types for OSGi bundles in class path
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.testing.sling-mock-1.6.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-sling-mock.git
commit 853e02b00aaf0750d56a20ce5d91c644bf6fd3e8
Author: Stefan Seifert <ss...@apache.org>
AuthorDate: Sat Sep 26 21:47:39 2015 +0000
SLING-5064 sling-mock: Register JCR node types for OSGi bundles in class path
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/testing/mocks/sling-mock@1705487 13f79535-47bb-0310-9956-ffa450edef68
---
.../sling/context/NodeTypeDefinitionScanner.java | 27 ++++++++++++++++------
1 file changed, 20 insertions(+), 7 deletions(-)
diff --git a/src/main/java/org/apache/sling/testing/mock/sling/context/NodeTypeDefinitionScanner.java b/src/main/java/org/apache/sling/testing/mock/sling/context/NodeTypeDefinitionScanner.java
index da5f33a..bec7900 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/context/NodeTypeDefinitionScanner.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/context/NodeTypeDefinitionScanner.java
@@ -58,33 +58,46 @@ public final class NodeTypeDefinitionScanner {
nodeTypeDefinitions = findeNodeTypeDefinitions();
}
+ /**
+ * @return Node type definitions found in classpath as registered in OSGi bundle headers
+ */
public List<String> getNodeTypeDefinitions() {
return nodeTypeDefinitions;
}
/**
* Registers node types found in classpath in JCR repository.
- * @param Session session
+ * @param session Session
*/
public void register(Session session) throws RepositoryException {
+ List<String> nodeTypeResources = getNodeTypeDefinitions();
+ register(session, nodeTypeResources);
+ }
+
+ /**
+ * Registers node types found in classpath in JCR repository.
+ * @param session Session
+ * @param nodeTypeResources List of classpath resource URLs pointing to node type definitions
+ */
+ public void register(Session session, List<String> nodeTypeResources) throws RepositoryException {
ClassLoader classLoader = getClass().getClassLoader();
Workspace workspace = session.getWorkspace();
NodeTypeManager nodeTypeManager = workspace.getNodeTypeManager();
NamespaceRegistry namespaceRegistry = workspace.getNamespaceRegistry();
ValueFactory valueFactory = session.getValueFactory();
- // try registering node types multiple times because the ecact order is not known
- List<String> nodeTypeResources = new ArrayList<String>(NodeTypeDefinitionScanner.get().getNodeTypeDefinitions());
+ // try registering node types multiple times because the eyact order is not known
int iteration = 0;
- while (!nodeTypeResources.isEmpty()) {
- registerAndRemoveSucceeds(nodeTypeResources, classLoader, nodeTypeManager, namespaceRegistry, valueFactory, false);
+ List<String> remainingNodeTypeResources = new ArrayList<String>(nodeTypeResources);
+ while (!remainingNodeTypeResources.isEmpty()) {
+ registerAndRemoveSucceeds(remainingNodeTypeResources, classLoader, nodeTypeManager, namespaceRegistry, valueFactory, false);
iteration++;
if (iteration >= MAX_ITERATIONS) {
break;
}
}
- if (!nodeTypeResources.isEmpty()) {
- registerAndRemoveSucceeds(nodeTypeResources, classLoader, nodeTypeManager, namespaceRegistry, valueFactory, true);
+ if (!remainingNodeTypeResources.isEmpty()) {
+ registerAndRemoveSucceeds(remainingNodeTypeResources, classLoader, nodeTypeManager, namespaceRegistry, valueFactory, true);
}
}
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.