Modified: incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleRepository.java URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleRepository.java?rev=915409&r1=915408&r2=915409&view=diff ============================================================================== --- incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleRepository.java (original) +++ incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleRepository.java Tue Feb 23 16:20:40 2010 @@ -106,12 +106,12 @@ * ----- Repository ----- */ - public Connection getConnection(Map<String, Serializable> parameters) { + public Connection getConnection(Map<String, Serializable> params) { // TODO credentials return new SimpleConnection(this); } - public SPI getSPI() { + public SPI getSPI(Map<String, Serializable> params) { // TODO credentials return new SimpleConnection(this); }
Added: incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleRepositoryService.java URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleRepositoryService.java?rev=915409&view=auto ============================================================================== --- incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleRepositoryService.java (added) +++ incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleRepositoryService.java Tue Feb 23 16:20:40 2010 @@ -0,0 +1,49 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Authors: + * Florent Guillaume, Nuxeo + */ +package org.apache.chemistry.impl.simple; + +import java.util.Collection; +import java.util.Collections; + +import org.apache.chemistry.Repository; +import org.apache.chemistry.RepositoryEntry; +import org.apache.chemistry.RepositoryService; + +/** + * Simple repository service holding one repository instance. + */ +public class SimpleRepositoryService implements RepositoryService { + + protected final Repository repository; + + public SimpleRepositoryService(Repository repository) { + this.repository = repository; + } + + public Repository getDefaultRepository() { + return repository; + } + + public Collection<RepositoryEntry> getRepositories() { + return Collections.<RepositoryEntry> singleton(repository); + } + + public Repository getRepository(String repositoryId) { + return repository.getId().equals(repositoryId) ? repository : null; + } + +} Propchange: incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleRepositoryService.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleRepositoryService.java ------------------------------------------------------------------------------ svn:keywords = Id Modified: incubator/chemistry/trunk/chemistry/chemistry-jcr/src/main/java/org/apache/chemistry/jcr/JcrRepository.java URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-jcr/src/main/java/org/apache/chemistry/jcr/JcrRepository.java?rev=915409&r1=915408&r2=915409&view=diff ============================================================================== --- incubator/chemistry/trunk/chemistry/chemistry-jcr/src/main/java/org/apache/chemistry/jcr/JcrRepository.java (original) +++ incubator/chemistry/trunk/chemistry/chemistry-jcr/src/main/java/org/apache/chemistry/jcr/JcrRepository.java Tue Feb 23 16:20:40 2010 @@ -45,7 +45,6 @@ import org.apache.chemistry.CapabilityJoin; import org.apache.chemistry.CapabilityQuery; import org.apache.chemistry.CapabilityRendition; -import org.apache.chemistry.Connection; import org.apache.chemistry.ListPage; import org.apache.chemistry.ObjectId; import org.apache.chemistry.Paging; @@ -90,12 +89,11 @@ this(repository, null); } - public SPI getSPI() { - // TODO parameters - return (SPI) getConnection(null); + public SPI getSPI(Map<String, Serializable> params) { + return getConnection(params); } - public Connection getConnection(Map<String, Serializable> parameters) { + public JcrConnection getConnection(Map<String, Serializable> params) { try { return new JcrConnection(repository.login(creds, workspace), this); } catch (RepositoryException e) { Modified: incubator/chemistry/trunk/chemistry/chemistry-shell/src/main/java/org/apache/chemistry/shell/app/ChemistryApp.java URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-shell/src/main/java/org/apache/chemistry/shell/app/ChemistryApp.java?rev=915409&r1=915408&r2=915409&view=diff ============================================================================== --- incubator/chemistry/trunk/chemistry/chemistry-shell/src/main/java/org/apache/chemistry/shell/app/ChemistryApp.java (original) +++ incubator/chemistry/trunk/chemistry/chemistry-shell/src/main/java/org/apache/chemistry/shell/app/ChemistryApp.java Tue Feb 23 16:20:40 2010 @@ -24,7 +24,13 @@ package org.apache.chemistry.shell.app; -import org.apache.chemistry.atompub.client.APPContentManager; +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; + +import org.apache.chemistry.Repository; +import org.apache.chemistry.RepositoryManager; +import org.apache.chemistry.atompub.client.APPRepositoryService; import org.apache.chemistry.shell.cmds.cmis.Cat; import org.apache.chemistry.shell.cmds.cmis.CreateFile; import org.apache.chemistry.shell.cmds.cmis.CreateFolder; @@ -44,7 +50,7 @@ */ public class ChemistryApp extends AbstractApplication { - protected APPContentManager cm; + protected APPRepositoryService repositoryService; public ChemistryApp() { registry.registerCommand(new DumpTree()); @@ -58,31 +64,30 @@ registry.registerCommand(new Remove()); registry.registerCommand(new Cat()); registry.registerCommand(new Put()); - registry.registerCommand(new Query()); + registry.registerCommand(new Query()); } @Override protected void doConnect() { - cm = new APPContentManager(serverUrl.toExternalForm()); - if (username != null) { - cm.login(username, new String(password)); - } + Map<String, Serializable> params = new HashMap<String, Serializable>(); + params.put(Repository.PARAM_USERNAME, username); + params.put(Repository.PARAM_PASSWORD, new String(password)); + repositoryService = new APPRepositoryService( + serverUrl.toExternalForm(), params); + RepositoryManager.getInstance().registerService(repositoryService); } public void disconnect() { - cm = null; + RepositoryManager.getInstance().unregisterService(repositoryService); + repositoryService = null; } public boolean isConnected() { - return cm != null; + return repositoryService != null; } public Context getRootContext() { return new ChemistryRootContext(this); } - public APPContentManager getContentManager() { - return cm; - } - } Modified: incubator/chemistry/trunk/chemistry/chemistry-shell/src/main/java/org/apache/chemistry/shell/app/ChemistryContext.java URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-shell/src/main/java/org/apache/chemistry/shell/app/ChemistryContext.java?rev=915409&r1=915408&r2=915409&view=diff ============================================================================== --- incubator/chemistry/trunk/chemistry/chemistry-shell/src/main/java/org/apache/chemistry/shell/app/ChemistryContext.java (original) +++ incubator/chemistry/trunk/chemistry/chemistry-shell/src/main/java/org/apache/chemistry/shell/app/ChemistryContext.java Tue Feb 23 16:20:40 2010 @@ -30,10 +30,7 @@ import org.apache.chemistry.CMISObject; import org.apache.chemistry.Folder; -import org.apache.chemistry.ObjectEntry; -import org.apache.chemistry.Repository; import org.apache.chemistry.atompub.client.APPConnection; -import org.apache.chemistry.atompub.client.APPContentManager; import org.apache.chemistry.shell.util.ColorHelper; import org.apache.chemistry.shell.util.Path; @@ -41,7 +38,6 @@ //public static final String CONN_KEY = "chemistry.connection"; - protected final APPContentManager cm; protected final APPConnection conn; protected final CMISObject entry; @@ -53,7 +49,6 @@ super(app, path); this.conn = conn; this.entry = entry; - cm = app.getContentManager(); } @Override @@ -61,26 +56,6 @@ return (ChemistryApp)app; } - // Not used - public APPConnection getConnection() { - return conn; - } - - // Not used - public CMISObject getEntry() { - return entry; - } - - // Not used - public APPContentManager getContentManager() { - return cm; - } - - // Not used - public Repository getRepository() { - return conn.getRepository(); - } - public Context getContext(String name) { load(); CMISObject e = children.get(name); @@ -140,27 +115,6 @@ return null; } - // Not used - public CMISObject getObjectByAbsolutePath(String path) { - ObjectEntry entry = conn.getObjectByPath(path, null); - if (entry!=null) { - return conn.getObject(entry); - } else { - return null; - } - } - - // Not used - public CMISObject resolveObject(String path) { - Path p = resolvePath(path); - ObjectEntry entry = conn.getObjectByPath(p.toString(), null); - if (entry!=null) { - return conn.getObject(entry); - } else { - return null; - } - } - public String id() { return "Object "+entry.getId()+" of type "+entry.getTypeId(); } Modified: incubator/chemistry/trunk/chemistry/chemistry-shell/src/main/java/org/apache/chemistry/shell/app/ChemistryRootContext.java URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-shell/src/main/java/org/apache/chemistry/shell/app/ChemistryRootContext.java?rev=915409&r1=915408&r2=915409&view=diff ============================================================================== --- incubator/chemistry/trunk/chemistry/chemistry-shell/src/main/java/org/apache/chemistry/shell/app/ChemistryRootContext.java (original) +++ incubator/chemistry/trunk/chemistry/chemistry-shell/src/main/java/org/apache/chemistry/shell/app/ChemistryRootContext.java Tue Feb 23 16:20:40 2010 @@ -24,31 +24,29 @@ package org.apache.chemistry.shell.app; +import java.io.Serializable; +import java.util.Collection; import java.util.HashMap; import java.util.Map; import org.apache.chemistry.CMISObject; import org.apache.chemistry.Repository; +import org.apache.chemistry.RepositoryEntry; +import org.apache.chemistry.RepositoryManager; import org.apache.chemistry.atompub.client.APPConnection; -import org.apache.chemistry.atompub.client.APPContentManager; -import org.apache.chemistry.atompub.client.ContentManager; import org.apache.chemistry.shell.util.ColorHelper; import org.apache.chemistry.shell.util.Path; public class ChemistryRootContext extends AbstractContext { - protected Map<String, Repository> repos; protected String[] keys; + protected String[] ls; public ChemistryRootContext(ChemistryApp app) { super(app, Path.ROOT); } - public APPContentManager getContentManager() { - return ((ChemistryApp) app).getContentManager(); - } - @Override public ChemistryApp getApplication() { return (ChemistryApp) app; @@ -60,19 +58,23 @@ public Context getContext(String name) { load(); - ContentManager cm = getContentManager(); - if (cm == null) { - Console.getDefault().error("Not connected: cannot browse repository"); + ChemistryApp app = getApplication(); + if (!app.isConnected()) { + Console.getDefault().error( + "Not connected: cannot browse repository"); return null; } - Repository r = repos.get(name); // TODO atompub client is using IDs to get repositories ... - Repository repo = cm.getRepository(r.getId()); - if (repo != null) { - APPConnection conn = (APPConnection) repo.getConnection(null); - CMISObject entry = conn.getRootFolder(); - return new ChemistryContext((ChemistryApp) app, path.append(name), conn, entry); + Repository repo = RepositoryManager.getInstance().getRepository(name); + if (repo == null) { + return null; } - return null; + Map<String, Serializable> params = new HashMap<String, Serializable>(); + params.put(Repository.PARAM_USERNAME, app.username); + params.put(Repository.PARAM_PASSWORD, new String(app.password)); + APPConnection conn = (APPConnection) repo.getConnection(params); + CMISObject entry = conn.getRootFolder(); + return new ChemistryContext((ChemistryApp) app, path.append(name), + conn, entry); } public String[] ls() { @@ -90,21 +92,24 @@ } protected boolean load() { - if (keys == null) { - ContentManager cm = getContentManager(); - if (cm == null) { - Console.getDefault().error("Not connected: cannot browse repository"); - return false; - } - Repository[] repos = cm.getRepositories(); - this.repos = new HashMap<String, Repository>(); - keys = new String[repos.length]; - ls = new String[repos.length]; - for (int i=0; i<repos.length; i++) { - keys[i] = repos[i].getName(); - this.repos.put(repos[i].getName(), repos[i]); - ls[i] = ColorHelper.decorateNameByType(repos[i].getName(), "Repository"); - } + if (keys != null) { + return true; + } + if (!getApplication().isConnected()) { + Console.getDefault().error( + "Not connected: cannot browse repository"); + return false; + } + Collection<RepositoryEntry> repos = RepositoryManager.getInstance().getRepositories(); + int size = repos.size(); + keys = new String[size]; + ls = new String[size]; + int i = 0; + for (RepositoryEntry repo : repos) { + String name = repo.getName(); + keys[i] = name; + ls[i] = ColorHelper.decorateNameByType(name, "Repository"); + i++; } return true; } @@ -112,14 +117,10 @@ public void reset() { keys = null; ls = null; - APPContentManager cm = getContentManager(); - if (cm != null) { - cm.refresh(); - } } public String id() { - return "CMIS server: "+app.getServerUrl(); + return "CMIS server: " + app.getServerUrl(); } } Modified: incubator/chemistry/trunk/chemistry/chemistry-tests/src/main/java/org/apache/chemistry/test/BasicTestCase.java URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-tests/src/main/java/org/apache/chemistry/test/BasicTestCase.java?rev=915409&r1=915408&r2=915409&view=diff ============================================================================== --- incubator/chemistry/trunk/chemistry/chemistry-tests/src/main/java/org/apache/chemistry/test/BasicTestCase.java (original) +++ incubator/chemistry/trunk/chemistry/chemistry-tests/src/main/java/org/apache/chemistry/test/BasicTestCase.java Tue Feb 23 16:20:40 2010 @@ -541,6 +541,7 @@ assertNotNull("dog not found", dog); ContentStream cs = dog.getContentStream(); + assertNotNull(cs); assertTrue(cs.getLength() != 0); assertEquals("dog.jpg", cs.getFileName()); assertEquals("image/jpeg", cs.getMimeType()); Modified: incubator/chemistry/trunk/chemistry/chemistry-tests/src/main/java/org/apache/chemistry/test/MainServlet.java URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-tests/src/main/java/org/apache/chemistry/test/MainServlet.java?rev=915409&r1=915408&r2=915409&view=diff ============================================================================== --- incubator/chemistry/trunk/chemistry/chemistry-tests/src/main/java/org/apache/chemistry/test/MainServlet.java (original) +++ incubator/chemistry/trunk/chemistry/chemistry-tests/src/main/java/org/apache/chemistry/test/MainServlet.java Tue Feb 23 16:20:40 2010 @@ -25,8 +25,11 @@ import javax.servlet.Servlet; import org.apache.chemistry.Repository; +import org.apache.chemistry.RepositoryManager; +import org.apache.chemistry.RepositoryService; import org.apache.chemistry.atompub.server.jaxrs.AbderaResource; import org.apache.chemistry.atompub.server.servlet.CMISServlet; +import org.apache.chemistry.impl.simple.SimpleRepositoryService; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; @@ -56,12 +59,18 @@ public static final int DEFAULT_PORT = 8082; public static void main(String[] args) throws Exception { - Repository repository = BasicHelper.makeSimpleRepository(ROOT_ID); - new MainServlet().run(args, repository, "/cmis", "/repository"); + RepositoryService repositoryService = new SimpleRepositoryService( + BasicHelper.makeSimpleRepository(ROOT_ID)); + RepositoryManager.getInstance().registerService(repositoryService); + try { + new MainServlet().run(args, "/cmis", "/repository"); + } finally { + RepositoryManager.getInstance().unregisterService(repositoryService); + } } - public void run(String[] args, Repository repository, String contextPath, - String cmisService) throws Exception { + public void run(String[] args, String contextPath, String cmisService) + throws Exception { String host = DEFAULT_HOST; int port = DEFAULT_PORT; int minutes = DEFAULT_MINUTES; @@ -92,15 +101,14 @@ connector.setPort(port); server.setConnectors(new Connector[] { connector }); if (jaxrs) { - setUpJAXRS(server, contextPath, repository); + setUpJAXRS(server, contextPath); } else { - setUpAbderaServlet(server, contextPath, repository); + setUpAbderaServlet(server, contextPath); } server.start(); String url = "http://" + host + ':' + port + contextPath + cmisService; - log.warn(getServerName(repository) + " started, AtomPub service url: " - + url); + log.warn("CMIS repository started, AtomPub service url: " + url); try { Thread.sleep(1000 * 60 * minutes); server.stop(); @@ -112,15 +120,12 @@ } } - log.warn(getServerName(repository) + " stopped"); - } - - protected static String getServerName(Repository repository) { - return "CMIS repository " + repository.getInfo().getProductName(); + log.warn("CMIS repository stopped"); } - protected void setUpAbderaServlet(Server server, String contextPath, - Repository repository) throws Exception { + protected void setUpAbderaServlet(Server server, String contextPath) + throws Exception { + Repository repository = RepositoryManager.getInstance().getDefaultRepository(); Servlet servlet = new CMISServlet(repository); Context context = new Context(server, contextPath, Context.SESSIONS); context.addServlet(new ServletHolder(servlet), "/*"); @@ -131,12 +136,12 @@ protected File tmpDir; - protected void setUpJAXRS(Server server, String contextPath, - Repository repository) throws Exception { + protected void setUpJAXRS(Server server, String contextPath) + throws Exception { if (!"/cmis".equals(contextPath)) { - throw new RuntimeException("AbderaResource implies a context of /cmis"); + throw new RuntimeException( + "AbderaResource implies a context of /cmis"); } - AbderaResource.repository = repository; // TODO inject differently AbderaResource.pathMunger = null; // TODO tmpDir = makeTmpDir(); String webApp = makeWebApp(tmpDir); Modified: incubator/chemistry/trunk/chemistry/chemistry-tests/src/test/java/org/apache/chemistry/test/TestAtomPubClientServer.java URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-tests/src/test/java/org/apache/chemistry/test/TestAtomPubClientServer.java?rev=915409&r1=915408&r2=915409&view=diff ============================================================================== --- incubator/chemistry/trunk/chemistry/chemistry-tests/src/test/java/org/apache/chemistry/test/TestAtomPubClientServer.java (original) +++ incubator/chemistry/trunk/chemistry/chemistry-tests/src/test/java/org/apache/chemistry/test/TestAtomPubClientServer.java Tue Feb 23 16:20:40 2010 @@ -19,8 +19,7 @@ import javax.servlet.Servlet; import org.apache.chemistry.Repository; -import org.apache.chemistry.atompub.client.APPContentManager; -import org.apache.chemistry.atompub.client.ContentManager; +import org.apache.chemistry.atompub.client.APPRepositoryService; import org.apache.chemistry.atompub.server.servlet.CMISServlet; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -79,8 +78,8 @@ @Override public Repository makeRepository() throws Exception { String serverUrl = startServer(); - ContentManager cm = new APPContentManager(serverUrl); - return cm.getDefaultRepository(); + APPRepositoryService rs = new APPRepositoryService(serverUrl, null); + return rs.getDefaultRepository(); } @Override
