/* * Copyright (C) 2003-2011 eXo Platform SAS. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License * as published by the Free Software Foundation; either version 3 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see<http://www.gnu.org/licenses/>. */ package exoplatform; import javax.jcr.Credentials; import javax.jcr.Node; import javax.jcr.NodeIterator; import javax.jcr.Repository; import javax.jcr.Session; import javax.jcr.Value; import javax.jcr.Workspace; import javax.jcr.query.Query; import javax.jcr.query.QueryManager; import javax.jcr.query.QueryResult; import junit.framework.TestCase; import org.exoplatform.container.ExoContainer; import org.exoplatform.container.ExoContainerContext; import org.exoplatform.container.PortalContainer; import org.exoplatform.container.RootContainer; import org.exoplatform.services.jcr.RepositoryService; import org.exoplatform.services.jcr.core.CredentialsImpl; import org.exoplatform.services.log.ExoLogger; import org.exoplatform.services.log.Log; import org.exoplatform.services.security.IdentityRegistry; /** * Created by The eXo Platform SAS * Author : Nguyen Thanh Hai * haint@exoplatform.com * Jun 14, 2011 */ public class JcrTestCase extends TestCase { private RepositoryService repoService ; private IdentityRegistry identityRegistry ; private static final Log log = ExoLogger.getLogger(JcrTestCase.class) ; public void setUp() throws Exception { ExoContainer container = ExoContainerContext.getCurrentContainer() ; repoService = (RepositoryService) container.getComponentInstance(RepositoryService.class) ; identityRegistry = (IdentityRegistry) container.getComponentInstanceOfType(IdentityRegistry.class) ; if(System.getProperty("java.security.auth.login.config") == null) System.setProperty("java.security.auth.login.config", Thread.currentThread().getContextClassLoader().getResource("login.config").toString()) ; } public void testWorkspaceNames() throws Exception { String[] workspaceNames = repoService.getDefaultRepository().getWorkspaceNames() ; for(String s : workspaceNames) { log.info("testWorkspaceNames: " + s) ; } log.info("\n\n ------------ setUp(): " + identityRegistry.hashCode() + " ------------ \n\n") ; } public void testLogin() throws Exception { log.info("----------------testLogin()-------------------------") ; Credentials credentical = new CredentialsImpl("root", "exo".toCharArray()) ; Repository repository = repoService.getRepository("repository") ; Session session = repository.login(credentical, "production") ; // assertNotNull(session) ; // assertEquals(session.getUserID(), "root") ; // assertEquals(session.getWorkspace().getName(), "production") ; log.info("Login successfully !!!") ; } // public void testAddingNode() throws Exception { // log.info("----------------testAddingNode()---------------------") ; // Credentials credentical = new CredentialsImpl("exo", "exo".toCharArray()) ; // Repository repository = repoService.getRepository("repository") ; // Session session = repository.login(credentical, "production") ; // assertNotNull(session) ; // // Node rootNode = session.getRootNode() ; // Node encyclopedia = rootNode.addNode("wiki:encyclopedia") ; // Node p = encyclopedia.addNode("wiki:entry") ; // p.setProperty("wiki:title", "Java") ; // p.setProperty("wiki:content", "java") ; // p.setProperty("wiki:category", new String[] { "programing language", "sun" }) ; // // Node n = encyclopedia.addNode("wiki:entry") ; // n.setProperty("wiki:title", "Song") ; // n.setProperty("wiki:content", "song") ; // n.setProperty("wiki:category", new String[] { "song", "music" }) ; // session.save() ; // } // // public void testBrowsingContent() throws Exception { // log.info("----------------testBrowsingContent()-----------------") ; // Credentials credentical = new CredentialsImpl("exo", "exo".toCharArray()) ; // Repository repository = repoService.getRepository("repository") ; // Session session = repository.login(credentical, "production") ; // assertNotNull(session) ; // // Node rootNode = session.getRootNode() ; // Node encyclopedia = rootNode.getNode("wiki:encyclopedia") ; // NodeIterator iterator = encyclopedia.getNodes() ; // while(iterator.hasNext()) { // Node node = iterator.nextNode() ; // log.info("Name: " + node.getName()) ; // log.info("Title: " + node.getProperty("wiki:title").getString()) ; // log.info("Content: " + node.getProperty("wiki:content").getString()) ; // log.info("Path: " + node.getPath()) ; // Value[] categories = node.getProperty("wiki:category").getValues() ; // for(Value c : categories) { // log.info("Category: " + c.getString()) ; // } // } // } // // public void testSearchContentWithXPath() throws Exception { // log.info("----------------testSearchContentWithXPath()-----------------") ; // Credentials credentical = new CredentialsImpl("exo", "exo".toCharArray()) ; // Repository repository = repoService.getRepository("repository") ; // Session session = repository.login(credentical, "production") ; // Workspace ws = session.getWorkspace() ; // QueryManager qm = ws.getQueryManager() ; // Query query = qm.createQuery("//wiki:encyclopedia/wiki:entry[@wiki:title = 'Java']", Query.XPATH) ; // QueryResult result = query.execute() ; // NodeIterator iterator = result.getNodes() ; // while(iterator.hasNext()) { // Node node = iterator.nextNode() ; // log.info("Name: " + node.getName()) ; // log.info("Title: " + node.getProperty("wiki:title").getString()) ; // log.info("Content: " + node.getProperty("wiki:content").getString()) ; // log.info("Path: " + node.getPath()) ; // Value[] categories = node.getProperty("wiki:category").getValues() ; // for(Value c : categories) { // log.info("Category: " + c.getString()) ; // } // } // } // // public void testSearchingContentWithLuceneFuzzy() throws Exception { // log.info("----------------testSearchContentWithLuceneFuzzy()-----------------") ; // Credentials credentical = new CredentialsImpl("exo", "exo".toCharArray()) ; // Repository repository = repoService.getRepository("repository") ; // Session session = repository.login(credentical, "production") ; // Workspace ws = session.getWorkspace() ; // QueryManager qm = ws.getQueryManager() ; // Query query = qm.createQuery("SELECT * FROM nt:unstructured WHERE CONTAINS( * , 'java')", Query.SQL) ; // QueryResult result = query.execute() ; // NodeIterator iterator = result.getNodes() ; // while(iterator.hasNext()) { // Node node = iterator.nextNode() ; // log.info("Name: " + node.getName()) ; // log.info("Title: " + node.getProperty("wiki:title").getString()) ; // log.info("Content: " + node.getProperty("wiki:content").getString()) ; // log.info("Path: " + node.getPath()) ; // Value[] categories = node.getProperty("wiki:category").getValues() ; // for(Value c : categories) { // log.info("Category: " + c.getString()) ; // } // } // } }