package org.easysoa.registry; import org.apache.log4j.Logger; import org.easysoa.registry.test.AbstractRegistryTest; import org.easysoa.registry.types.Endpoint; import org.easysoa.registry.types.IntelligentSystem; import org.easysoa.registry.types.IntelligentSystemTreeRoot; import org.easysoa.registry.types.SystemTreeRoot; import org.easysoa.registry.types.TaggingFolder; import org.easysoa.registry.types.ids.EndpointId; import org.easysoa.registry.types.ids.SoaNodeId; import org.easysoa.registry.utils.DocumentModelHelper; import org.junit.Assert; import org.junit.Test; import org.nuxeo.ecm.core.api.ClientException; import org.nuxeo.ecm.core.api.DocumentModel; import org.nuxeo.ecm.core.api.DocumentModelList; import org.nuxeo.ecm.core.api.PathRef; import org.nuxeo.runtime.test.runner.LocalDeploy; import com.google.inject.Inject; /** * * @author mkalam-alami * */ @LocalDeploy({ "org.easysoa.registry.doctypes.core:OSGI-INF/sample-ist-contrib.xml" }) public class IntelligentSystemTreeTest extends AbstractRegistryTest { @SuppressWarnings("unused") private static Logger logger = Logger.getLogger(IntelligentSystemTreeTest.class); @Inject DocumentService documentService; @Test public void testEnvironmentTrees() throws ClientException { // Create manual SystemTreeRoot DocumentModel strModel = documentService.createDocument(documentManager, SystemTreeRoot.DOCTYPE, "MyRoot", DocumentModelHelper .getWorkspacesPath(documentManager, defaultSubprojectId), "MyRoot"); // Create System in it DocumentModel systemModel = documentService.create(documentManager, new SoaNodeId(TaggingFolder.DOCTYPE, "MySystem"), strModel.getPathAsString()); // Create Endpoint in it DocumentModel endpointModel = documentService.create(documentManager, new EndpointId("Production", "MyEndpoint"), systemModel.getPathAsString()); documentManager.saveDocument(endpointModel); documentManager.save(); repositoryLogger.logAllRepository(); // Make sure that there are now 3 proxies of the endpoint, // one in the manual tree, the others in the intelligent trees // By environment DocumentModel istrModel = documentService.findDocument(documentManager, defaultSubprojectId, IntelligentSystemTreeRoot.DOCTYPE, "environment:environment"); Assert.assertNotNull("A By Environment intelligent system tree root must have been created", istrModel); Assert.assertEquals("The By Environment STR must contain 1 system", 1, documentManager.getChildren(istrModel.getRef()).size()); DocumentModel productionSystem = documentService.findDocument(documentManager, defaultSubprojectId, IntelligentSystem.DOCTYPE, "Production"); Assert.assertNotNull("A 'Production' system must have been created", productionSystem); DocumentModelList productionSystemChildren = documentManager.getChildren(productionSystem.getRef()); Assert.assertEquals("The 'Production' system must have a child", 1, productionSystemChildren.size()); DocumentModel childModel = productionSystemChildren.get(0); Assert.assertTrue("The document in the 'Production' system must be the expected endpoint", Endpoint.DOCTYPE.equals(childModel.getType()) && "MyEndpoint".equals(childModel.getPropertyValue(Endpoint.XPATH_URL))); // By alphabetical order endpointModel = documentManager.getDocument(new PathRef( DocumentModelHelper.getWorkspacesPath(documentManager, defaultSubprojectId) //+ "/alphabeticalOrder:first2Letters/M/Y/Production:MyEndpoint")); + "/alphabeticalOrder:first2Letters/P/R/Production:MyEndpoint")); Assert.assertNotNull("The endpoint must be classified by alphabetical order " + "(= in a multiple-levels hierarchy defined with parameters)", endpointModel); // Flat documents endpointModel = documentManager.getDocument(new PathRef( DocumentModelHelper.getWorkspacesPath(documentManager, defaultSubprojectId) + "/everythingFlat:everythingFlat/Production:MyEndpoint")); Assert.assertNotNull("The endpoint must be added to the flat document list", endpointModel); } }