package org.easysoa.registry.systems;
import org.apache.log4j.Logger;
import org.easysoa.registry.DocumentService;
import org.easysoa.registry.test.AbstractRegistryTest;
import org.easysoa.registry.types.Deliverable;
import org.easysoa.registry.types.IntelligentSystemTreeRoot;
import org.easysoa.registry.types.SystemTreeRoot;
import org.easysoa.registry.types.TaggingFolder;
import org.easysoa.registry.types.ids.SoaNodeId;
import org.easysoa.registry.types.java.MavenDeliverable;
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.test.annotations.Granularity;
import org.nuxeo.ecm.core.test.annotations.RepositoryConfig;
import org.nuxeo.runtime.test.runner.Features;
import com.google.inject.Inject;
/**
*
* @author mkalam-alami
*
*/
@Features(EasySOADefaultsFeature.class)
@RepositoryConfig(cleanup = Granularity.CLASS)
public class MavenHierarchyTest extends AbstractRegistryTest {
@SuppressWarnings("unused")
private static Logger logger = Logger.getLogger(MavenHierarchyTest.class);
@Inject
DocumentService documentService;
@Test
public void testClassification() 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(defaultSubprojectId, TaggingFolder.DOCTYPE, "MySystem"),
strModel.getPathAsString());
// Create Deliverable in it
DocumentModel deliverableModel = documentService.create(documentManager,
new SoaNodeId(defaultSubprojectId, Deliverable.DOCTYPE, "org.easysoa.registry:myartifact"),
systemModel.getPathAsString());
deliverableModel.setPropertyValue(Deliverable.XPATH_NATURE, MavenDeliverable.NATURE);
documentManager.saveDocument(deliverableModel);
documentManager.save();
// Make sure that the deliverable is now in the Maven hierarchy
DocumentModel istrModel = documentService.findDocument(documentManager,
defaultSubprojectId, IntelligentSystemTreeRoot.DOCTYPE, "mavenHierarchy:mavenHierarchy");
Assert.assertNotNull("A Maven hierarchy intelligent system tree root must have been created",
istrModel);
// (getChild() throws exceptions when the children are not found)
DocumentModel firstChild = documentManager.getChild(istrModel.getRef(), "org.easysoa");
DocumentModel secondChild = documentManager.getChild(firstChild.getRef(), "org.easysoa.registry");
documentManager.getChild(secondChild.getRef(), "org.easysoa.registry:myartifact");
}
}