Author: glen
Date: Fri Jan  4 23:21:57 2008
New Revision: 11856

Log:

* Introduce RegistryServer, an embedded-Jetty server class for the Registry 
which does APP stuff but not UI stuff.

* Adjust tests (JettyBasedServerTest and APPTests) to use RegistryServer, 
common code all now in one place.

* Move version -> 0.2-SNAPSHOT, and use version variable across poms to 
maintain consistency.

* Move up to Abdera 0.4.0


Added:
   
trunk/registry/modules/core/src/main/java/org/wso2/registry/app/RegistryServer.java
Modified:
   trunk/registry/modules/core/pom.xml
   
trunk/registry/modules/core/src/main/java/org/wso2/registry/app/RegistryAPPTargetResolver.java
   
trunk/registry/modules/core/src/main/java/org/wso2/registry/app/RemoteRegistry.java
   
trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/JDBCRegistry.java
   trunk/registry/modules/core/src/test/java/org/wso2/registry/app/APPTests.java
   
trunk/registry/modules/core/src/test/java/org/wso2/registry/app/JettyBasedServerTest.java
   trunk/registry/modules/distribution/pom.xml
   trunk/registry/modules/documentation/pom.xml
   trunk/registry/modules/webapps/pom.xml
   trunk/registry/pom.xml

Modified: trunk/registry/modules/core/pom.xml
==============================================================================
--- trunk/registry/modules/core/pom.xml (original)
+++ trunk/registry/modules/core/pom.xml Fri Jan  4 23:21:57 2008
@@ -4,7 +4,7 @@
     <parent>
         <groupId>org.wso2.registry</groupId>
         <artifactId>org.wso2.registry</artifactId>
-        <version>0.1-SNAPSHOT</version>
+        <version>${version}</version>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
@@ -134,7 +134,6 @@
             <groupId>org.mortbay.jetty</groupId>
             <artifactId>jetty</artifactId>
             <version>6.1.5</version>
-            <scope>test</scope>
         </dependency>
     </dependencies>
 </project>

Modified: 
trunk/registry/modules/core/src/main/java/org/wso2/registry/app/RegistryAPPTargetResolver.java
==============================================================================
--- 
trunk/registry/modules/core/src/main/java/org/wso2/registry/app/RegistryAPPTargetResolver.java
      (original)
+++ 
trunk/registry/modules/core/src/main/java/org/wso2/registry/app/RegistryAPPTargetResolver.java
      Fri Jan  4 23:21:57 2008
@@ -23,31 +23,33 @@
 import org.apache.abdera.protocol.server.RequestContext;
 import org.apache.abdera.protocol.server.Target;
 import org.apache.abdera.protocol.server.TargetType;
-import org.apache.abdera.protocol.server.impl.AbstractTarget;
+import org.apache.abdera.protocol.server.impl.DefaultTarget;
 
 public class RegistryAPPTargetResolver implements Resolver<Target> {
     public Target resolve(Request request) {
         RequestContext context = (RequestContext) request;
-        String uri = context.getUri().toString();
-        if (uri.indexOf("atom") < 0) {
-            return new RegistryTarget(TargetType.TYPE_UNKNOWN, context);
-        }
-        String httpMathod = context.getMethod();
-        if ("GET".equalsIgnoreCase(httpMathod)) {
+        String httpMethod = context.getMethod();
+
+//        String path = context.getTargetPath();
+//        if (!(path.startsWith("/atom/") || path.equals("/atom"))) {
+//            return null;
+//        }
+
+        if ("GET".equals(httpMethod) || "HEAD".equals(httpMethod)) {
             return new RegistryTarget(TargetType.TYPE_COLLECTION, context);
-        } else if ("POST".equalsIgnoreCase(httpMathod)) {
+        } else if ("POST".equals(httpMethod)) {
             return new RegistryTarget(TargetType.TYPE_COLLECTION, context);
-        } else if ("PUT".equalsIgnoreCase(httpMathod)) {
+        } else if ("PUT".equals(httpMethod)) {
+            // Could be either collection or entry... (if we support PUT 
<feed>...)
             return new RegistryTarget(TargetType.TYPE_ENTRY, context);
-        } else if ("DELETE".equalsIgnoreCase(httpMathod)) {
+        } else if ("DELETE".equals(httpMethod)) {
+            // Must exist, but could be either collection or entry...
             return new RegistryTarget(TargetType.TYPE_ENTRY, context);
         }
         return null;
     }
 
-    public static class RegistryTarget
-            extends AbstractTarget implements Target {
-
+    public static class RegistryTarget extends DefaultTarget {
         public RegistryTarget(TargetType type, RequestContext context) {
             super(type, context);
         }

Added: 
trunk/registry/modules/core/src/main/java/org/wso2/registry/app/RegistryServer.java
==============================================================================
--- (empty file)
+++ 
trunk/registry/modules/core/src/main/java/org/wso2/registry/app/RegistryServer.java
 Fri Jan  4 23:21:57 2008
@@ -0,0 +1,115 @@
+/*
+ * Copyright (c) 2007, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * 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.
+ */
+package org.wso2.registry.app;
+
+import org.wso2.registry.Registry;
+import org.wso2.registry.RegistryConstants;
+import org.wso2.registry.jdbc.realm.RegistryRealm;
+import org.wso2.registry.jdbc.realm.InMemoryRegistryRealm;
+import org.wso2.registry.jdbc.JDBCRegistry;
+import org.wso2.registry.jdbc.InMemoryJDBCRegistry;
+import org.apache.abdera.protocol.server.impl.AbstractSingletonProviderManager;
+import org.apache.abdera.protocol.server.impl.DefaultServiceContext;
+import org.apache.abdera.protocol.server.servlet.AbderaServlet;
+import org.apache.abdera.protocol.server.ServiceContext;
+import org.mortbay.jetty.Server;
+import org.mortbay.jetty.servlet.Context;
+import org.mortbay.jetty.servlet.ServletHolder;
+
+import javax.servlet.ServletException;
+
+/**
+ * A very simple embeddable Registry server - handles the Registry wire 
protocol (APP) but
+ * has no UI support built in.  Uses Jetty internally.
+ */
+public class RegistryServer {
+    DefaultServiceContext abderaServiceContext = new 
RegistryAPPServiceContext();
+    int port = 8081;
+    String baseURL = "/wso2registry";
+    Registry registry;
+    Server server;
+
+    public RegistryServer() {
+    }
+
+    public RegistryServer(int port) {
+        this.port = port;
+    }
+
+    public RegistryServer(int port, String baseURL) {
+        this.port = port;
+        this.baseURL = baseURL;
+    }
+
+    public static void main(String[] args) throws Exception {
+        RegistryServer server = new RegistryServer();
+        server.start();
+    }
+
+    public void start() throws Exception {
+        RegistryRealm realm = new InMemoryRegistryRealm();
+        JDBCRegistry jdbcRegistry = new InMemoryJDBCRegistry(realm);
+        System.getProperties().put(RegistryConstants.REGISTRY, jdbcRegistry);
+        System.getProperties().put(RegistryConstants.REGISTRY_REALM, new 
InMemoryRegistryRealm());
+
+        registry = jdbcRegistry;
+
+        RegistryAPPTargetResolver resolver = new RegistryAPPTargetResolver();
+        abderaServiceContext.setTargetResolver(resolver);
+        AbstractSingletonProviderManager pm = new 
RegistryAtomProviderManager();
+        abderaServiceContext.setProviderManager(pm);
+
+        server = new Server(port);
+        Context root = new Context(server, baseURL, Context.NO_SESSIONS);
+        root.addServlet(new ServletHolder(new AbderaServlet() {
+
+            @Override
+            protected ServiceContext createServiceContext() {
+                abderaServiceContext
+                        
.setDefaultProviderManager(RegistryAtomProviderManager.class.getName());
+                abderaServiceContext
+                        
.setDefaultTargetResolver(RegistryAPPTargetResolver.class.getName());
+                abderaServiceContext.init(getAbdera(), 
getProperties(getServletConfig()));
+                return abderaServiceContext;
+            }
+
+            public void init() throws ServletException {
+                super.init();
+            }
+        }), "/*");
+        server.start();
+    }
+
+    public void stop() throws Exception {
+        if (server != null) server.stop();
+    }
+
+    public int getPort() {
+        return port;
+    }
+
+    public void setPort(int port) {
+        this.port = port;
+    }
+
+    public String getBaseURL() {
+        return baseURL;
+    }
+
+    public void setBaseURL(String baseURL) {
+        this.baseURL = baseURL;
+    }
+}

Modified: 
trunk/registry/modules/core/src/main/java/org/wso2/registry/app/RemoteRegistry.java
==============================================================================
--- 
trunk/registry/modules/core/src/main/java/org/wso2/registry/app/RemoteRegistry.java
 (original)
+++ 
trunk/registry/modules/core/src/main/java/org/wso2/registry/app/RemoteRegistry.java
 Fri Jan  4 23:21:57 2008
@@ -159,14 +159,8 @@
     public boolean resourceExists(String path) throws RegistryException {
         Abdera abdera = new Abdera();
         AbderaClient abderaClient = new AbderaClient(abdera);
-        ClientResponse clientResponse = abderaClient.get(baseURI + path +
-                URL_SEPARATOR +
-                PARAMETER_RESOURCE_EXIST , getAuthorization());
-        Document introspection =
-                clientResponse.getDocument();
-        Feed feed = (Feed) introspection.getRoot();
-        String boolValue = feed.getSubtitle();
-        return "True".equals(boolValue);
+        ClientResponse response = abderaClient.head(baseURI + path);
+        return (response.getType() == Response.ResponseType.SUCCESS);
     }
 
     public void put(String path, Resource resource) throws RegistryException {
@@ -431,7 +425,7 @@
         Abdera abdera = new Abdera();
         AbderaClient abderaClient = new AbderaClient(abdera);
         RequestOptions requestOptions = getAuthorization();
-        requestOptions.addHeader("parameters", 
encodeParametesAsString(parameters));
+        requestOptions.setHeader("parameters", 
encodeParametersAsString(parameters));
         ClientResponse resp = abderaClient.get(baseURI + path +
                 URL_SEPARATOR +
                 PARAMETER_QUERY, requestOptions);
@@ -441,7 +435,7 @@
         return createResourceFromFeed(feed, true);
     }
 
-    public static String encodeParametesAsString(Object[] parameters) {
+    public static String encodeParametersAsString(Object[] parameters) {
         String value = "";
         for (int i = 0; i < parameters.length; i++) {
             Object parameter = parameters[i];

Modified: 
trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/JDBCRegistry.java
==============================================================================
--- 
trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/JDBCRegistry.java
  (original)
+++ 
trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/JDBCRegistry.java
  Fri Jan  4 23:21:57 2008
@@ -787,11 +787,10 @@
     }
 
     /**
-     * Returns the average rating for the given resource. This is the average 
of all ratings done by
-     * all users for the given resource.
+     * Returns the average rating (from all users) for the given resource.
      *
      * @param resourcePath Path of the resource.
-     * @return Average rating.
+     * @return average rating.
      */
     public float getAverageRating(String resourcePath) throws 
RegistryException {
 

Modified: 
trunk/registry/modules/core/src/test/java/org/wso2/registry/app/APPTests.java
==============================================================================
--- 
trunk/registry/modules/core/src/test/java/org/wso2/registry/app/APPTests.java   
    (original)
+++ 
trunk/registry/modules/core/src/test/java/org/wso2/registry/app/APPTests.java   
    Fri Jan  4 23:21:57 2008
@@ -15,28 +15,13 @@
  */
 package org.wso2.registry.app;
 
-import org.apache.abdera.protocol.server.impl.AbstractSingletonProviderManager;
-import org.apache.abdera.protocol.server.impl.DefaultServiceContext;
-import org.apache.abdera.protocol.server.servlet.AbderaServlet;
-import org.apache.abdera.protocol.server.ServiceContext;
+import junit.framework.TestCase;
 import org.apache.commons.httpclient.HttpClient;
 import org.apache.commons.httpclient.HttpMethod;
 import org.apache.commons.httpclient.methods.GetMethod;
 import org.apache.commons.httpclient.methods.PostMethod;
 import org.apache.commons.httpclient.methods.StringRequestEntity;
-import org.mortbay.jetty.Server;
-import org.mortbay.jetty.servlet.Context;
-import org.mortbay.jetty.servlet.ServletHolder;
-import org.wso2.registry.jdbc.JDBCRegistry;
-import org.wso2.registry.jdbc.InMemoryJDBCRegistry;
-import org.wso2.registry.jdbc.realm.RegistryRealm;
-import org.wso2.registry.jdbc.realm.InMemoryRegistryRealm;
 import org.wso2.registry.RegistryConstants;
-import org.wso2.registry.RegistryException;
-
-import javax.servlet.ServletException;
-
-import junit.framework.TestCase;
 
 /**
  * These tests use a raw HTTP client in order to exercise the APP 
implementation of our Registry
@@ -47,55 +32,16 @@
  * TODO: WORK IN PROGRESS (Glen)
  */
 public class APPTests extends TestCase implements RegistryConstants {
-    DefaultServiceContext abderaServiceContext;
+    String PORT = "8081";
+    String BASEURL = "http://localhost:"; + PORT + "/wso2registry/atom/";
 
-    public void setUp() throws Exception {
-        // Set up Jetty server
+    RegistryServer server = new RegistryServer();
 
-        abderaServiceContext = new RegistryAPPServiceContext();
-        RegistryAPPTargetResolver resolver = new RegistryAPPTargetResolver();
-        abderaServiceContext.setTargetResolver(resolver);
-        AbstractSingletonProviderManager pm = new 
RegistryAtomProviderManager();
-        abderaServiceContext.setProviderManager(pm);
-
-        Server server = new Server(8081);
-        Context root = new Context(server, "/wso2registry", 
Context.NO_SESSIONS);
-        root.addServlet(new ServletHolder(new AbderaServlet() {
-
-            @Override
-            protected ServiceContext createServiceContext() {
-                abderaServiceContext
-                        
.setDefaultProviderManager(RegistryAtomProviderManager.class.getName());
-                abderaServiceContext
-                        
.setDefaultTargetResolver(RegistryAPPTargetResolver.class.getName());
-                abderaServiceContext.init(getAbdera(), 
getProperties(getServletConfig()));
-                JDBCRegistry jdbcRegistry;
-                try {
-                    RegistryRealm realm = new InMemoryRegistryRealm();
-                    jdbcRegistry = new InMemoryJDBCRegistry(realm);
-                    //Realm registryRealm =
-                    //        
RegistryRealmFactory.createInMemoryRegistryRealm();
-                    //jdbcRegistry = new JDBCRegistry();
-                    //jdbcRegistry.init(registryRealm);
-                    System.getProperties().put(RegistryConstants.REGISTRY, 
jdbcRegistry);
-                    
System.getProperties().put(RegistryConstants.REGISTRY_REALM, new 
InMemoryRegistryRealm());
-                } catch (RegistryException e) {
-                    e.printStackTrace();
-                }
-                return abderaServiceContext;
-            }
-
-            public void init() throws ServletException {
-                super.init();
-                System.out.println("done");
-            }
-        }), "/*");
+    public void setUp() throws Exception {
+        server.setPort(Integer.parseInt(PORT));
         server.start();
     }
 
-    String PORT = "8081";
-    String BASEURL = "http://localhost:"; + PORT + "/wso2registry/atom/";
-
     public String buildURL(String path) {
         return BASEURL + path;
     }

Modified: 
trunk/registry/modules/core/src/test/java/org/wso2/registry/app/JettyBasedServerTest.java
==============================================================================
--- 
trunk/registry/modules/core/src/test/java/org/wso2/registry/app/JettyBasedServerTest.java
   (original)
+++ 
trunk/registry/modules/core/src/test/java/org/wso2/registry/app/JettyBasedServerTest.java
   Fri Jan  4 23:21:57 2008
@@ -18,79 +18,22 @@
  */
 package org.wso2.registry.app;
 
-import org.apache.abdera.protocol.server.ServiceContext;
-import org.apache.abdera.protocol.server.impl.AbstractSingletonProviderManager;
-import org.apache.abdera.protocol.server.impl.DefaultServiceContext;
-import org.apache.abdera.protocol.server.servlet.AbderaServlet;
-import org.mortbay.jetty.Server;
-import org.mortbay.jetty.servlet.Context;
-import org.mortbay.jetty.servlet.ServletHolder;
-import org.wso2.registry.RegistryConstants;
-import org.wso2.registry.RegistryException;
-import org.wso2.registry.jdbc.InMemoryJDBCRegistry;
-import org.wso2.registry.jdbc.JDBCRegistry;
 import org.wso2.registry.jdbc.JDBCRegistryTest;
-import org.wso2.registry.jdbc.realm.InMemoryRegistryRealm;
-import org.wso2.registry.jdbc.realm.RegistryRealm;
-
-import javax.servlet.ServletException;
 import java.net.URL;
 
 //This test case run all the test cases that there in JDBCRegistry using 
RemoteRegistry
 
 public class JettyBasedServerTest extends JDBCRegistryTest {
-    private DefaultServiceContext abderaServiceContext;
+    RegistryServer server = new RegistryServer();
 
     public void setUp() {
         try {
             if (registry == null) {
-                initJetty();
+                server.start();
                 registry = new RemoteRegistry(new 
URL("http://localhost:8081/wso2registry/atom";), "admin","admin");
             }
         } catch (Exception e) {
             fail("Failed to initialize the registry.");
         }
     }
-
-    private void initJetty() throws Exception {
-        abderaServiceContext = new RegistryAPPServiceContext();
-        RegistryAPPTargetResolver resolver = new RegistryAPPTargetResolver();
-        abderaServiceContext.setTargetResolver(resolver);
-        AbstractSingletonProviderManager pm = new 
RegistryAtomProviderManager();
-        abderaServiceContext.setProviderManager(pm);
-
-        Server server = new Server(8081);
-        Context root = new Context(server, "/wso2registry", 
Context.NO_SESSIONS);
-        root.addServlet(new ServletHolder(new AbderaServlet() {
-
-            @Override
-            protected ServiceContext createServiceContext() {
-                abderaServiceContext
-                        
.setDefaultProviderManager(RegistryAtomProviderManager.class.getName());
-                abderaServiceContext
-                        
.setDefaultTargetResolver(RegistryAPPTargetResolver.class.getName());
-                abderaServiceContext.init(getAbdera(), 
getProperties(getServletConfig()));
-                JDBCRegistry jdbcRegistry;
-                try {
-                    RegistryRealm realm = new InMemoryRegistryRealm();
-                    jdbcRegistry = new InMemoryJDBCRegistry(realm);
-                    //Realm registryRealm =
-                    //        
RegistryRealmFactory.createInMemoryRegistryRealm();
-                    //jdbcRegistry = new JDBCRegistry();
-                    //jdbcRegistry.init(registryRealm);
-                    System.getProperties().put(RegistryConstants.REGISTRY, 
jdbcRegistry);
-                    
System.getProperties().put(RegistryConstants.REGISTRY_REALM, new 
InMemoryRegistryRealm());
-                } catch (RegistryException e) {
-                    e.printStackTrace();
-                }
-                return abderaServiceContext;
-            }
-
-            public void init() throws ServletException {
-                super.init();
-                System.out.println("done");
-            }
-        }), "/*");
-        server.start();
-    }
 }

Modified: trunk/registry/modules/distribution/pom.xml
==============================================================================
--- trunk/registry/modules/distribution/pom.xml (original)
+++ trunk/registry/modules/distribution/pom.xml Fri Jan  4 23:21:57 2008
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.wso2.registry</groupId>
         <artifactId>org.wso2.registry</artifactId>
-        <version>0.1-SNAPSHOT</version>
+        <version>${version}</version>
     </parent>
 
 

Modified: trunk/registry/modules/documentation/pom.xml
==============================================================================
--- trunk/registry/modules/documentation/pom.xml        (original)
+++ trunk/registry/modules/documentation/pom.xml        Fri Jan  4 23:21:57 2008
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.wso2.registry</groupId>
         <artifactId>org.wso2.registry</artifactId>
-        <version>0.1-SNAPSHOT</version>
+        <version>${version}</version>
     </parent>
 
     <artifactId>wso2registry-documentation</artifactId>

Modified: trunk/registry/modules/webapps/pom.xml
==============================================================================
--- trunk/registry/modules/webapps/pom.xml      (original)
+++ trunk/registry/modules/webapps/pom.xml      Fri Jan  4 23:21:57 2008
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.wso2.registry</groupId>
         <artifactId>org.wso2.registry</artifactId>
-        <version>0.1-SNAPSHOT</version>
+        <version>${version}</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>wso2registry-webapp</artifactId>

Modified: trunk/registry/pom.xml
==============================================================================
--- trunk/registry/pom.xml      (original)
+++ trunk/registry/pom.xml      Fri Jan  4 23:21:57 2008
@@ -24,7 +24,7 @@
     <groupId>org.wso2.registry</groupId>
     <artifactId>org.wso2.registry</artifactId>
     <packaging>pom</packaging>
-    <version>0.1-SNAPSHOT</version>
+    <version>${version}</version>
     <name>WSO2 Repository</name>
     <url>http://wso2.org/projects/registry</url>
 
@@ -358,7 +358,7 @@
     </build>
 
     <properties>
-        <version>0.1-SNAPSHOT</version>
+        <version>0.2-SNAPSHOT</version>
         <junit.version>3.8.2</junit.version>
         <log4j.version>1.2.13</log4j.version>
         <javamail.version>1.4</javamail.version>
@@ -379,7 +379,7 @@
         <opensymphony.version>2.6.11</opensymphony.version>
         <hsqldb.version>1.8.0</hsqldb.version>
          <!--For Abdera-->
-        <abdera.version>0.3.0-incubating</abdera.version>
+        <abdera.version>0.4.0-incubating-SNAPSHOT</abdera.version>
         <httpclient.version>3.0.1</httpclient.version>
         <axiom.version>1.2.5</axiom.version>
         <stax.version>1.0.1</stax.version>

_______________________________________________
Registry-dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/registry-dev

Reply via email to