Author: rmannibucau
Date: Sun May  6 22:16:12 2012
New Revision: 1334805

URL: http://svn.apache.org/viewvc?rev=1334805&view=rev
Log:
adding wink module (in progress)

Added:
    openejb/trunk/openejb/server/openejb-wink/
    openejb/trunk/openejb/server/openejb-wink/pom.xml
    openejb/trunk/openejb/server/openejb-wink/src/
    openejb/trunk/openejb/server/openejb-wink/src/main/
    openejb/trunk/openejb/server/openejb-wink/src/main/java/
    openejb/trunk/openejb/server/openejb-wink/src/main/java/org/
    openejb/trunk/openejb/server/openejb-wink/src/main/java/org/apache/
    openejb/trunk/openejb/server/openejb-wink/src/main/java/org/apache/openejb/
    
openejb/trunk/openejb/server/openejb-wink/src/main/java/org/apache/openejb/server/
    
openejb/trunk/openejb/server/openejb-wink/src/main/java/org/apache/openejb/server/wink/
    
openejb/trunk/openejb/server/openejb-wink/src/main/java/org/apache/openejb/server/wink/WinkHttpListener.java
    
openejb/trunk/openejb/server/openejb-wink/src/main/java/org/apache/openejb/server/wink/WinkService.java
    openejb/trunk/openejb/server/openejb-wink/src/main/resources/
    openejb/trunk/openejb/server/openejb-wink/src/main/resources/META-INF/
    
openejb/trunk/openejb/server/openejb-wink/src/main/resources/META-INF/org.apache.openejb.server.ServerService/
    
openejb/trunk/openejb/server/openejb-wink/src/main/resources/META-INF/org.apache.openejb.server.ServerService/wink
    openejb/trunk/openejb/server/openejb-wink/src/test/
    openejb/trunk/openejb/server/openejb-wink/src/test/java/
    openejb/trunk/openejb/server/openejb-wink/src/test/java/org/
    openejb/trunk/openejb/server/openejb-wink/src/test/java/org/apache/
    openejb/trunk/openejb/server/openejb-wink/src/test/java/org/apache/openejb/
    
openejb/trunk/openejb/server/openejb-wink/src/test/java/org/apache/openejb/server/
    
openejb/trunk/openejb/server/openejb-wink/src/test/java/org/apache/openejb/server/wink/
    
openejb/trunk/openejb/server/openejb-wink/src/test/java/org/apache/openejb/server/wink/WinkSimpleTest.java
    openejb/trunk/openejb/server/openejb-wink/src/test/resources/
    openejb/trunk/openejb/server/openejb-wink/src/test/resources/META-INF/
    
openejb/trunk/openejb/server/openejb-wink/src/test/resources/META-INF/ejb-jar.xml
Modified:
    openejb/trunk/openejb/server/pom.xml

Added: openejb/trunk/openejb/server/openejb-wink/pom.xml
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-wink/pom.xml?rev=1334805&view=auto
==============================================================================
--- openejb/trunk/openejb/server/openejb-wink/pom.xml (added)
+++ openejb/trunk/openejb/server/openejb-wink/pom.xml Sun May  6 22:16:12 2012
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+  <parent>
+    <artifactId>server</artifactId>
+    <groupId>org.apache.openejb</groupId>
+    <version>4.0.0-beta-3-SNAPSHOT</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+
+  <artifactId>openejb-wink</artifactId>
+  <name>OpenEJB :: Server :: Wink</name>
+
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>openejb-http</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>openejb-rest</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.wink</groupId>
+      <artifactId>wink-server</artifactId>
+      <version>1.1.3-incubating</version>
+      <exclusions>
+        <exclusion>
+          <groupId>commons-lang</groupId>
+          <artifactId>commons-lang</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.slf4j</groupId>
+          <artifactId>slf4j-api</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.apache.geronimo.specs</groupId>
+          <artifactId>geronimo-annotation_1.1_spec</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>javax.xml.bind</groupId>
+          <artifactId>jaxb-api</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>com.sun.xml.bind</groupId>
+          <artifactId>jaxb-impl</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>javax.activation</groupId>
+          <artifactId>activation</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>javax.ws.rs</groupId>
+          <artifactId>jsr311-api</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.apache.geronimo.specs</groupId>
+          <artifactId>geronimo-j2ee_1.4_spec</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+  </dependencies>
+</project>

Added: 
openejb/trunk/openejb/server/openejb-wink/src/main/java/org/apache/openejb/server/wink/WinkHttpListener.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-wink/src/main/java/org/apache/openejb/server/wink/WinkHttpListener.java?rev=1334805&view=auto
==============================================================================
--- 
openejb/trunk/openejb/server/openejb-wink/src/main/java/org/apache/openejb/server/wink/WinkHttpListener.java
 (added)
+++ 
openejb/trunk/openejb/server/openejb-wink/src/main/java/org/apache/openejb/server/wink/WinkHttpListener.java
 Sun May  6 22:16:12 2012
@@ -0,0 +1,398 @@
+package org.apache.openejb.server.wink;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Collection;
+import java.util.Enumeration;
+import java.util.EventListener;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import javax.naming.Context;
+import javax.servlet.Filter;
+import javax.servlet.FilterRegistration;
+import javax.servlet.RequestDispatcher;
+import javax.servlet.Servlet;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRegistration;
+import javax.servlet.SessionCookieConfig;
+import javax.servlet.SessionTrackingMode;
+import javax.servlet.descriptor.JspConfigDescriptor;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
+import javax.ws.rs.core.Application;
+import org.apache.openejb.BeanContext;
+import org.apache.openejb.Injection;
+import org.apache.openejb.server.httpd.HttpRequest;
+import org.apache.openejb.server.httpd.HttpRequestImpl;
+import org.apache.openejb.server.httpd.HttpResponse;
+import org.apache.openejb.server.rest.RsHttpListener;
+import org.apache.webbeans.config.WebBeansContext;
+import org.apache.wink.common.internal.lifecycle.ObjectFactory;
+import org.apache.wink.server.internal.DeploymentConfiguration;
+import org.apache.wink.server.internal.RequestProcessor;
+import org.apache.wink.server.utils.RegistrationUtils;
+
+// TODO: lifecycle (se cxf-rs invokers)
+// TODO: see if using RestServlet is not more relevant = breaking our 
RsHttpListener
+public class WinkHttpListener implements RsHttpListener {
+    private RequestProcessor processor;
+    private ServletContext servletContext;
+
+    @Override
+    public void deployEJB(final String fullContext, final BeanContext 
beanContext) {
+        deployPojo(fullContext, beanContext.getBeanClass(), null, null, null, 
null); // TODO
+    }
+
+    @Override
+    public void deploySingleton(final String fullContext, final Object o, 
final Application appInstance) {
+        
RegistrationUtils.registerInstances(contexts(o.getClass().getClassLoader()), o);
+    }
+
+    @Override
+    public void deployPojo(final String fullContext, final Class<?> 
loadedClazz, final Application app, final Collection<Injection> injections, 
final Context context, final WebBeansContext owbCtx) {
+        
RegistrationUtils.registerClasses(contexts(loadedClazz.getClassLoader()), 
loadedClazz);
+    }
+
+    private javax.servlet.ServletContext contexts(final ClassLoader 
classLoader) {
+        final DeploymentConfiguration conf = new DeploymentConfiguration();
+        conf.setProperties(properties(classLoader));
+        conf.init();
+
+        processor = new RequestProcessor(conf);
+
+        servletContext = new ServletContext(classLoader);
+        servletContext.setAttribute(RequestProcessor.class.getName(), 
processor);
+        return servletContext;
+    }
+
+    private static Properties properties(final ClassLoader cl) {
+        final Properties prop = new Properties();
+        final InputStream is = 
cl.getResourceAsStream("META-INF/wink-default.properties");
+        if (is != null) {
+            try {
+                prop.load(is);
+            } catch (IOException e) {
+                e.printStackTrace();  // TODO
+            }
+        }
+
+        final Properties prop2 = new Properties();
+        final InputStream is2 = 
cl.getResourceAsStream("META-INF/wink.properties");
+        if (is2 != null) {
+            try {
+                prop2.load(is2);
+                prop.putAll(prop2);
+            } catch (IOException e) {
+                e.printStackTrace();  // TODO
+            }
+        }
+
+        return prop; // TODO: cache it
+    }
+
+    @Override
+    public void undeploy() {
+        
processor.getConfiguration().getProvidersRegistry().removeAllProviders();
+        
processor.getConfiguration().getResourceRegistry().removeAllResources();
+        for (ObjectFactory<?> of : 
processor.getConfiguration().getApplicationObjectFactories()) {
+            of.releaseAll(null);
+        }
+    }
+
+    @Override
+    public void onMessage(final HttpRequest httpRequest, final HttpResponse 
response) throws Exception {
+        final HttpServletRequest wrapper = new 
HttpServletRequestWrapper(httpRequest) {
+            @Override
+            public String getRequestURI() {
+                if (httpRequest instanceof HttpRequestImpl) {
+                    return ((HttpRequestImpl) httpRequest).requestRawPath();
+                }
+                return super.getRequestURI();
+            }
+
+            @Override
+            public String getContextPath() {
+                if (httpRequest instanceof HttpRequestImpl) {
+                    return ((HttpRequestImpl) 
httpRequest).extractContextPath();
+                }
+                return super.getContextPath();
+            }
+
+            @Override
+            public ServletContext getServletContext() {
+                return servletContext;
+            }
+        };
+
+        RequestProcessor.getRequestProcessor(wrapper.getServletContext(), 
RequestProcessor.class.getName())
+                .handleRequest(wrapper, response);
+    }
+
+    private static class ServletContext implements 
javax.servlet.ServletContext {
+        private final Map<String, Object> attributes = new 
ConcurrentHashMap<String, Object>();
+        private final ClassLoader classloader;
+
+        private ServletContext(final ClassLoader classloader) {
+            this.classloader = classloader;
+        }
+
+        @Override
+        public String getContextPath() {
+            return null;
+        }
+
+        @Override
+        public javax.servlet.ServletContext getContext(String uripath) {
+            return null;
+        }
+
+        @Override
+        public int getMajorVersion() {
+            return 0;
+        }
+
+        @Override
+        public int getMinorVersion() {
+            return 0;
+        }
+
+        @Override
+        public String getMimeType(String file) {
+            return null;
+        }
+
+        @Override
+        public Set<String> getResourcePaths(String path) {
+            return null;
+        }
+
+        @Override
+        public URL getResource(String path) throws MalformedURLException {
+            return null;
+        }
+
+        @Override
+        public InputStream getResourceAsStream(String path) {
+            return classloader.getResourceAsStream(path);
+        }
+
+        @Override
+        public RequestDispatcher getRequestDispatcher(String path) {
+            return null;
+        }
+
+        @Override
+        public RequestDispatcher getNamedDispatcher(String name) {
+            return null;
+        }
+
+        @Override
+        public Servlet getServlet(String name) throws ServletException {
+            return null;
+        }
+
+        @Override
+        public Enumeration<Servlet> getServlets() {
+            return null;
+        }
+
+        @Override
+        public Enumeration<String> getServletNames() {
+            return null;
+        }
+
+        @Override
+        public void log(String msg) {
+
+        }
+
+        @Override
+        public void log(Exception exception, String msg) {
+
+        }
+
+        @Override
+        public void log(String message, Throwable throwable) {
+
+        }
+
+        @Override
+        public String getRealPath(String path) {
+            return null;
+        }
+
+        @Override
+        public String getServerInfo() {
+            return null;
+        }
+
+        @Override
+        public String getInitParameter(String name) {
+            return null;
+        }
+
+        @Override
+        public Enumeration<String> getInitParameterNames() {
+            return null;
+        }
+
+        @Override
+        public boolean setInitParameter(String name, String value) {
+            return false;
+        }
+
+        @Override
+        public Object getAttribute(String name) {
+            return attributes.get(name);
+        }
+
+        @Override
+        public Enumeration<String> getAttributeNames() {
+            return null;
+        }
+
+        @Override
+        public void setAttribute(String name, Object object) {
+            attributes.put(name, object);
+        }
+
+        @Override
+        public void removeAttribute(String name) {
+
+        }
+
+        @Override
+        public String getServletContextName() {
+            return null;
+        }
+
+        @Override
+        public ServletRegistration.Dynamic addServlet(String servletName, 
String className) throws IllegalArgumentException, IllegalStateException {
+            return null;
+        }
+
+        @Override
+        public ServletRegistration.Dynamic addServlet(String servletName, 
Servlet servlet) throws IllegalArgumentException, IllegalStateException {
+            return null;
+        }
+
+        @Override
+        public ServletRegistration.Dynamic addServlet(String servletName, 
Class<? extends Servlet> clazz) throws IllegalArgumentException, 
IllegalStateException {
+            return null;
+        }
+
+        @Override
+        public <T extends Servlet> T createServlet(Class<T> clazz) throws 
ServletException {
+            return null;
+        }
+
+        @Override
+        public ServletRegistration getServletRegistration(String servletName) {
+            return null;
+        }
+
+        @Override
+        public Map<String, ? extends ServletRegistration> 
getServletRegistrations() {
+            return null;
+        }
+
+        @Override
+        public FilterRegistration.Dynamic addFilter(String filterName, String 
className) throws IllegalArgumentException, IllegalStateException {
+            return null;
+        }
+
+        @Override
+        public FilterRegistration.Dynamic addFilter(String filterName, Filter 
filter) throws IllegalArgumentException, IllegalStateException {
+            return null;
+        }
+
+        @Override
+        public FilterRegistration.Dynamic addFilter(String filterName, Class<? 
extends Filter> filterClass) throws IllegalArgumentException, 
IllegalStateException {
+            return null;
+        }
+
+        @Override
+        public <T extends Filter> T createFilter(Class<T> clazz) throws 
ServletException {
+            return null;
+        }
+
+        @Override
+        public FilterRegistration getFilterRegistration(String filterName) {
+            return null;
+        }
+
+        @Override
+        public Map<String, ? extends FilterRegistration> 
getFilterRegistrations() {
+            return null;
+        }
+
+        @Override
+        public void addListener(Class<? extends EventListener> listenerClass) {
+
+        }
+
+        @Override
+        public void addListener(String className) {
+
+        }
+
+        @Override
+        public <T extends EventListener> void addListener(T t) {
+
+        }
+
+        @Override
+        public <T extends EventListener> T createListener(Class<T> clazz) 
throws ServletException {
+            return null;
+        }
+
+        @Override
+        public void declareRoles(String... roleNames) {
+
+        }
+
+        @Override
+        public SessionCookieConfig getSessionCookieConfig() {
+            return null;
+        }
+
+        @Override
+        public void setSessionTrackingModes(Set<SessionTrackingMode> 
sessionTrackingModes) {
+
+        }
+
+        @Override
+        public Set<SessionTrackingMode> getDefaultSessionTrackingModes() {
+            return null;
+        }
+
+        @Override
+        public int getEffectiveMajorVersion() throws 
UnsupportedOperationException {
+            return 0;
+        }
+
+        @Override
+        public int getEffectiveMinorVersion() throws 
UnsupportedOperationException {
+            return 0;
+        }
+
+        @Override
+        public Set<SessionTrackingMode> getEffectiveSessionTrackingModes() {
+            return null;
+        }
+
+        @Override
+        public ClassLoader getClassLoader() {
+            return null;
+        }
+
+        @Override
+        public JspConfigDescriptor getJspConfigDescriptor() {
+            return null;
+        }
+    }
+}

Added: 
openejb/trunk/openejb/server/openejb-wink/src/main/java/org/apache/openejb/server/wink/WinkService.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-wink/src/main/java/org/apache/openejb/server/wink/WinkService.java?rev=1334805&view=auto
==============================================================================
--- 
openejb/trunk/openejb/server/openejb-wink/src/main/java/org/apache/openejb/server/wink/WinkService.java
 (added)
+++ 
openejb/trunk/openejb/server/openejb-wink/src/main/java/org/apache/openejb/server/wink/WinkService.java
 Sun May  6 22:16:12 2012
@@ -0,0 +1,293 @@
+package org.apache.openejb.server.wink;
+
+import org.apache.openejb.server.rest.RESTService;
+import org.apache.openejb.server.rest.RsHttpListener;
+
+import javax.servlet.*;
+import javax.servlet.descriptor.JspConfigDescriptor;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Enumeration;
+import java.util.EventListener;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+
+public class WinkService extends RESTService {
+    @Override
+    protected RsHttpListener createHttpListener() {
+        return new WinkHttpListener();
+    }
+
+    @Override
+    public String getName() {
+        return "wink";
+    }
+
+    public static class StandaloneServletContext implements ServletContext {
+        private final Map<String, Object> attributes = new 
ConcurrentHashMap<String, Object>();
+        private ClassLoader classloader;
+
+        public StandaloneServletContext(ClassLoader classloader) {
+            this.classloader = classloader;
+        }
+
+        @Override
+        public InputStream getResourceAsStream(final String path) {
+            return classloader.getResourceAsStream(path);
+        }
+
+        @Override
+        public Object getAttribute(final String name) {
+            return attributes.get(name);
+        }
+
+        @Override
+        public void setAttribute(final String name, final Object object) {
+            attributes.put(name, object);
+        }
+
+        // mocks
+
+        @Override
+        public String getContextPath() {
+            return null;
+        }
+
+        @Override
+        public ServletContext getContext(String uripath) {
+            return null;
+        }
+
+        @Override
+        public int getMajorVersion() {
+            return 0;
+        }
+
+        @Override
+        public int getMinorVersion() {
+            return 0;
+        }
+
+        @Override
+        public String getMimeType(String file) {
+            return null;
+        }
+
+        @Override
+        public Set<String> getResourcePaths(String path) {
+            return null;
+        }
+
+        @Override
+        public URL getResource(String path) throws MalformedURLException {
+            return null;
+        }
+
+        @Override
+        public RequestDispatcher getRequestDispatcher(String path) {
+            return null;
+        }
+
+        @Override
+        public RequestDispatcher getNamedDispatcher(String name) {
+            return null;
+        }
+
+        @Override
+        public Servlet getServlet(String name) throws ServletException {
+            return null;
+        }
+
+        @Override
+        public Enumeration<Servlet> getServlets() {
+            return null;
+        }
+
+        @Override
+        public Enumeration<String> getServletNames() {
+            return null;
+        }
+
+        @Override
+        public void log(String msg) {
+          
+        }
+
+        @Override
+        public void log(Exception exception, String msg) {
+          
+        }
+
+        @Override
+        public void log(String message, Throwable throwable) {
+          
+        }
+
+        @Override
+        public String getRealPath(String path) {
+            return null;
+        }
+
+        @Override
+        public String getServerInfo() {
+            return null;
+        }
+
+        @Override
+        public String getInitParameter(String name) {
+            return null;
+        }
+
+        @Override
+        public Enumeration<String> getInitParameterNames() {
+            return null;
+        }
+
+        @Override
+        public boolean setInitParameter(String name, String value) {
+            return false;
+        }
+
+        @Override
+        public Enumeration<String> getAttributeNames() {
+            return null;
+        }
+
+        @Override
+        public void removeAttribute(String name) {
+          
+        }
+
+        @Override
+        public String getServletContextName() {
+            return null;
+        }
+
+        @Override
+        public ServletRegistration.Dynamic addServlet(String servletName, 
String className) throws IllegalArgumentException, IllegalStateException {
+            return null;
+        }
+
+        @Override
+        public ServletRegistration.Dynamic addServlet(String servletName, 
Servlet servlet) throws IllegalArgumentException, IllegalStateException {
+            return null;
+        }
+
+        @Override
+        public ServletRegistration.Dynamic addServlet(String servletName, 
Class<? extends Servlet> clazz) throws IllegalArgumentException, 
IllegalStateException {
+            return null;
+        }
+
+        @Override
+        public <T extends Servlet> T createServlet(Class<T> clazz) throws 
ServletException {
+            return null;
+        }
+
+        @Override
+        public ServletRegistration getServletRegistration(String servletName) {
+            return null;
+        }
+
+        @Override
+        public Map<String, ? extends ServletRegistration> 
getServletRegistrations() {
+            return null;
+        }
+
+        @Override
+        public FilterRegistration.Dynamic addFilter(String filterName, String 
className) throws IllegalArgumentException, IllegalStateException {
+            return null;
+        }
+
+        @Override
+        public FilterRegistration.Dynamic addFilter(String filterName, Filter 
filter) throws IllegalArgumentException, IllegalStateException {
+            return null;
+        }
+
+        @Override
+        public FilterRegistration.Dynamic addFilter(String filterName, Class<? 
extends Filter> filterClass) throws IllegalArgumentException, 
IllegalStateException {
+            return null;
+        }
+
+        @Override
+        public <T extends Filter> T createFilter(Class<T> clazz) throws 
ServletException {
+            return null;
+        }
+
+        @Override
+        public FilterRegistration getFilterRegistration(String filterName) {
+            return null;
+        }
+
+        @Override
+        public Map<String, ? extends FilterRegistration> 
getFilterRegistrations() {
+            return null;
+        }
+
+        @Override
+        public void addListener(Class<? extends EventListener> listenerClass) {
+          
+        }
+
+        @Override
+        public void addListener(String className) {
+          
+        }
+
+        @Override
+        public <T extends EventListener> void addListener(T t) {
+          
+        }
+
+        @Override
+        public <T extends EventListener> T createListener(Class<T> clazz) 
throws ServletException {
+            return null;
+        }
+
+        @Override
+        public void declareRoles(String... roleNames) {
+          
+        }
+
+        @Override
+        public SessionCookieConfig getSessionCookieConfig() {
+            return null;
+        }
+
+        @Override
+        public void setSessionTrackingModes(Set<SessionTrackingMode> 
sessionTrackingModes) {
+          
+        }
+
+        @Override
+        public Set<SessionTrackingMode> getDefaultSessionTrackingModes() {
+            return null;
+        }
+
+        @Override
+        public int getEffectiveMajorVersion() throws 
UnsupportedOperationException {
+            return 0;
+        }
+
+        @Override
+        public int getEffectiveMinorVersion() throws 
UnsupportedOperationException {
+            return 0;
+        }
+
+        @Override
+        public Set<SessionTrackingMode> getEffectiveSessionTrackingModes() {
+            return null;
+        }
+
+        @Override
+        public ClassLoader getClassLoader() {
+            return null;
+        }
+
+        @Override
+        public JspConfigDescriptor getJspConfigDescriptor() {
+            return null;
+        }
+    }
+}

Added: 
openejb/trunk/openejb/server/openejb-wink/src/main/resources/META-INF/org.apache.openejb.server.ServerService/wink
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-wink/src/main/resources/META-INF/org.apache.openejb.server.ServerService/wink?rev=1334805&view=auto
==============================================================================
--- 
openejb/trunk/openejb/server/openejb-wink/src/main/resources/META-INF/org.apache.openejb.server.ServerService/wink
 (added)
+++ 
openejb/trunk/openejb/server/openejb-wink/src/main/resources/META-INF/org.apache.openejb.server.ServerService/wink
 Sun May  6 22:16:12 2012
@@ -0,0 +1 @@
+server = org.apache.openejb.server.wink.WinkService

Added: 
openejb/trunk/openejb/server/openejb-wink/src/test/java/org/apache/openejb/server/wink/WinkSimpleTest.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-wink/src/test/java/org/apache/openejb/server/wink/WinkSimpleTest.java?rev=1334805&view=auto
==============================================================================
--- 
openejb/trunk/openejb/server/openejb-wink/src/test/java/org/apache/openejb/server/wink/WinkSimpleTest.java
 (added)
+++ 
openejb/trunk/openejb/server/openejb-wink/src/test/java/org/apache/openejb/server/wink/WinkSimpleTest.java
 Sun May  6 22:16:12 2012
@@ -0,0 +1,74 @@
+package org.apache.openejb.server.wink;
+
+import javax.ws.rs.PathParam;
+import org.apache.openejb.OpenEjbContainer;
+import org.apache.openejb.loader.IO;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import javax.ejb.Stateless;
+import javax.ejb.embeddable.EJBContainer;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import java.io.IOException;
+import java.net.URL;
+import java.util.Properties;
+
+import static junit.framework.Assert.assertEquals;
+
+public class WinkSimpleTest {
+    private static EJBContainer container;
+
+    @BeforeClass
+    public static void start() throws Exception {
+        Properties properties = new Properties();
+        properties.setProperty(OpenEjbContainer.OPENEJB_EMBEDDED_REMOTABLE, 
"true");
+        container = EJBContainer.createEJBContainer(properties);
+    }
+
+    @AfterClass
+    public static void close() throws Exception {
+        if (container != null) {
+            container.close();
+        }
+    }
+
+    @Test public void rest() throws IOException {
+        String response = IO.slurp(new 
URL("http://localhost:4204/openejb-wink/ejb/normal";));
+        assertEquals("ok", response);
+    }
+
+    @Test public void rest2() throws IOException {
+        String response = IO.slurp(new 
URL("http://localhost:4204/openejb-wink/ejb2/ok2";));
+        assertEquals("ok2", response);
+    }
+
+    @Test public void foo() throws IOException {
+        String response = IO.slurp(new 
URL("http://localhost:4204/openejb-wink/ejb2/foo/ok";));
+        assertEquals("_ok_", response);
+    }
+
+    @Stateless
+    @Path("/ejb")
+    public static class RESTIsCool {
+        @Path("/normal") @GET
+        public String normal() {
+            return "ok";
+        }
+    }
+
+    @Stateless
+    @Path("/ejb2")
+    public static class RESTIsCool2 {
+        @Path("/ok2") @GET
+        public String normal() {
+            return "ok2";
+        }
+
+        @Path("/foo/{bar}") @GET
+        public String foo(@PathParam("bar") final String bar) {
+            return "_" + bar + "_";
+        }
+    }
+}

Added: 
openejb/trunk/openejb/server/openejb-wink/src/test/resources/META-INF/ejb-jar.xml
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-wink/src/test/resources/META-INF/ejb-jar.xml?rev=1334805&view=auto
==============================================================================
    (empty)

Modified: openejb/trunk/openejb/server/pom.xml
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/pom.xml?rev=1334805&r1=1334804&r2=1334805&view=diff
==============================================================================
--- openejb/trunk/openejb/server/pom.xml (original)
+++ openejb/trunk/openejb/server/pom.xml Sun May  6 22:16:12 2012
@@ -44,6 +44,7 @@
     <module>openejb-rest</module>
     <module>openejb-ssh</module>
     <module>openejb-common-cli</module>
+    <module>openejb-wink</module>
   </modules>
 </project>
 


Reply via email to