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