Skip to content

Commit

Permalink
servers starts
Browse files Browse the repository at this point in the history
  • Loading branch information
Yevhenii Voevodin committed Apr 13, 2017
1 parent 38cc160 commit c753175
Show file tree
Hide file tree
Showing 16 changed files with 760 additions and 707 deletions.
1,012 changes: 506 additions & 506 deletions assembly/assembly-ide-war/pom.xml

Large diffs are not rendered by default.

Expand Up @@ -10,15 +10,15 @@
*******************************************************************************/
package org.eclipse.che;


import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
// FIXME: spi
//import javax.servlet.Filter;
//import javax.servlet.FilterChain;
//import javax.servlet.FilterConfig;
//import javax.servlet.ServletException;
//import javax.servlet.ServletRequest;
//import javax.servlet.ServletResponse;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.regex.Pattern;

Expand All @@ -28,26 +28,26 @@
* @author Max Shaposhnik
*/

public class DashboardRedirectionFilter implements Filter {
private static Pattern projectPattern = Pattern.compile("^/(_app|[^/]+?)/.+");

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest)request;
HttpServletResponse resp = (HttpServletResponse)response;

if ("GET".equals(req.getMethod()) && !projectPattern.matcher(req.getRequestURI()).matches()) {
resp.sendRedirect("/dashboard/");
return;
}
chain.doFilter(request, response);
}

@Override
public void init(FilterConfig filterConfig) throws ServletException {
}

@Override
public void destroy() {
}
}
//public class DashboardRedirectionFilter implements Filter {
// private static Pattern projectPattern = Pattern.compile("^/(_app|[^/]+?)/.+");
//
// @Override
// public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// HttpServletRequest req = (HttpServletRequest)request;
// HttpServletResponse resp = (HttpServletResponse)response;
//
// if ("GET".equals(req.getMethod()) && !projectPattern.matcher(req.getRequestURI()).matches()) {
// resp.sendRedirect("/dashboard/");
// return;
// }
// chain.doFilter(request, response);
// }
//
// @Override
// public void init(FilterConfig filterConfig) throws ServletException {
// }
//
// @Override
// public void destroy() {
// }
//}
73 changes: 37 additions & 36 deletions assembly/assembly-ide-war/src/main/webapp/WEB-INF/web.xml
Expand Up @@ -22,43 +22,44 @@
<jsp-file>/IDE.jsp</jsp-file>
</servlet>

<filter>
<filter-name>dashboardFilter</filter-name>
<filter-class>org.eclipse.che.DashboardRedirectionFilter</filter-class>
</filter>
<filter>
<filter-name>cacheDisablingFilter</filter-name>
<filter-class>org.eclipse.che.filter.CheCacheDisablingFilter</filter-class>
<init-param>
<param-name>pattern_filename</param-name>
<param-value>^.*\.nocache\..*$</param-value>
</init-param>
<init-param>
<param-name>pattern_appname</param-name>
<param-value>^.*/_app/.*$</param-value>
</init-param>
</filter>
<filter>
<filter-name>cacheForcingFilter</filter-name>
<filter-class>org.eclipse.che.filter.CheCacheForcingFilter</filter-class>
<init-param>
<param-name>pattern_filename</param-name>
<param-value>^.*\.cache\..*$</param-value>
</init-param>
</filter>
<!--FIXME: spi-->
<!--<filter>-->
<!--<filter-name>dashboardFilter</filter-name>-->
<!--<filter-class>org.eclipse.che.DashboardRedirectionFilter</filter-class>-->
<!--</filter>-->
<!--<filter>-->
<!--<filter-name>cacheDisablingFilter</filter-name>-->
<!--<filter-class>org.eclipse.che.filter.CheCacheDisablingFilter</filter-class>-->
<!--<init-param>-->
<!--<param-name>pattern_filename</param-name>-->
<!--<param-value>^.*\.nocache\..*$</param-value>-->
<!--</init-param>-->
<!--<init-param>-->
<!--<param-name>pattern_appname</param-name>-->
<!--<param-value>^.*/_app/.*$</param-value>-->
<!--</init-param>-->
<!--</filter>-->
<!--<filter>-->
<!--<filter-name>cacheForcingFilter</filter-name>-->
<!--<filter-class>org.eclipse.che.filter.CheCacheForcingFilter</filter-class>-->
<!--<init-param>-->
<!--<param-name>pattern_filename</param-name>-->
<!--<param-value>^.*\.cache\..*$</param-value>-->
<!--</init-param>-->
<!--</filter>-->

<filter-mapping>
<filter-name>dashboardFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>cacheDisablingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>cacheForcingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--<filter-mapping>-->
<!--<filter-name>dashboardFilter</filter-name>-->
<!--<url-pattern>/*</url-pattern>-->
<!--</filter-mapping>-->
<!--<filter-mapping>-->
<!--<filter-name>cacheDisablingFilter</filter-name>-->
<!--<url-pattern>/*</url-pattern>-->
<!--</filter-mapping>-->
<!--<filter-mapping>-->
<!--<filter-name>cacheForcingFilter</filter-name>-->
<!--<url-pattern>/*</url-pattern>-->
<!--</filter-mapping>-->

<servlet-mapping>
<servlet-name>IDE</servlet-name>
Expand Down
Expand Up @@ -10,102 +10,103 @@
*******************************************************************************/
package org.eclipse.che;

import org.eclipse.che.commons.env.EnvironmentContext;
import org.eclipse.che.commons.subject.SubjectImpl;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.testng.MockitoTestNGListener;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;

import javax.servlet.FilterChain;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import static org.mockito.Matchers.any;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
// FIXME: spi
//import org.eclipse.che.commons.env.EnvironmentContext;
//import org.eclipse.che.commons.subject.SubjectImpl;
//import org.mockito.InjectMocks;
//import org.mockito.Mock;
//import org.mockito.testng.MockitoTestNGListener;
//import org.testng.annotations.DataProvider;
//import org.testng.annotations.Listeners;
//import org.testng.annotations.Test;
//
//import javax.servlet.FilterChain;
//import javax.servlet.ServletRequest;
//import javax.servlet.ServletResponse;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//
//import static org.mockito.Matchers.any;
//import static org.mockito.Matchers.eq;
//import static org.mockito.Mockito.verify;
//import static org.mockito.Mockito.when;

/**
* @author Max Shaposhnik (mshaposhnik@codenvy.com)
*/

@Listeners(value = {MockitoTestNGListener.class})
public class DashboardRedirectionFilterTest {
@Mock
private FilterChain chain;

@Mock
private HttpServletRequest request;

@Mock
private HttpServletResponse response;

@InjectMocks
private DashboardRedirectionFilter filter;

@Test
public void shouldSkipRequestToProject() throws Exception {
//given
when(request.getMethod()).thenReturn("GET");
when(request.getRequestURI()).thenReturn("/namespace/ws-id/project1");
when(request.getRequestURL()).thenReturn(new StringBuffer("http://localhost:8080/namespace/ws-id/project1"));

//when
filter.doFilter(request, response, chain);

//then
verify(chain).doFilter(any(ServletRequest.class), any(ServletResponse.class));
}

@Test(dataProvider = "nonNamespacePathProvider")
public void shouldRedirectIfRequestWithoutNamespace(String uri, String url) throws Exception {
//given
when(request.getMethod()).thenReturn("GET");
when(request.getRequestURI()).thenReturn(uri);
when(request.getRequestURL()).thenReturn(new StringBuffer(url));
EnvironmentContext context = new EnvironmentContext();
context.setSubject(new SubjectImpl("id123", "name", "token123", false));
EnvironmentContext.setCurrent(context);

//when
filter.doFilter(request, response, chain);

//then
verify(response).sendRedirect(eq("/dashboard/"));
}

@DataProvider(name = "nonNamespacePathProvider")
public Object[][] nonProjectPathProvider() {
return new Object[][]{{"/ws-id/", "http://localhost:8080/ws-id123123/"},
{"/wsname", "http://localhost:8080/wsname_only"},
};
}

@Test(dataProvider = "notGETMethodProvider")
public void shouldSkipNotGETRequest(String method) throws Exception {
//given
when(request.getMethod()).thenReturn(method);
when(request.getRequestURI()).thenReturn("/ws-id/project1");
when(request.getRequestURL()).thenReturn(new StringBuffer("http://localhost:8080/ws-id/project1"));

//when
filter.doFilter(request, response, chain);

//then
verify(chain).doFilter(any(ServletRequest.class), any(ServletResponse.class));
}

@DataProvider(name = "notGETMethodProvider")
public Object[][] notGETMethodProvider() {
return new Object[][]{{"POST"},
{"HEAD"},
{"DELETE"},
{"PUT"}
};
}
}
//
//@Listeners(value = {MockitoTestNGListener.class})
//public class DashboardRedirectionFilterTest {
// @Mock
// private FilterChain chain;
//
// @Mock
// private HttpServletRequest request;
//
// @Mock
// private HttpServletResponse response;
//
// @InjectMocks
// private DashboardRedirectionFilter filter;
//
// @Test
// public void shouldSkipRequestToProject() throws Exception {
// //given
// when(request.getMethod()).thenReturn("GET");
// when(request.getRequestURI()).thenReturn("/namespace/ws-id/project1");
// when(request.getRequestURL()).thenReturn(new StringBuffer("http://localhost:8080/namespace/ws-id/project1"));
//
// //when
// filter.doFilter(request, response, chain);
//
// //then
// verify(chain).doFilter(any(ServletRequest.class), any(ServletResponse.class));
// }
//
// @Test(dataProvider = "nonNamespacePathProvider")
// public void shouldRedirectIfRequestWithoutNamespace(String uri, String url) throws Exception {
// //given
// when(request.getMethod()).thenReturn("GET");
// when(request.getRequestURI()).thenReturn(uri);
// when(request.getRequestURL()).thenReturn(new StringBuffer(url));
// EnvironmentContext context = new EnvironmentContext();
// context.setSubject(new SubjectImpl("id123", "name", "token123", false));
// EnvironmentContext.setCurrent(context);
//
// //when
// filter.doFilter(request, response, chain);
//
// //then
// verify(response).sendRedirect(eq("/dashboard/"));
// }
//
// @DataProvider(name = "nonNamespacePathProvider")
// public Object[][] nonProjectPathProvider() {
// return new Object[][]{{"/ws-id/", "http://localhost:8080/ws-id123123/"},
// {"/wsname", "http://localhost:8080/wsname_only"},
// };
// }
//
// @Test(dataProvider = "notGETMethodProvider")
// public void shouldSkipNotGETRequest(String method) throws Exception {
// //given
// when(request.getMethod()).thenReturn(method);
// when(request.getRequestURI()).thenReturn("/ws-id/project1");
// when(request.getRequestURL()).thenReturn(new StringBuffer("http://localhost:8080/ws-id/project1"));
//
// //when
// filter.doFilter(request, response, chain);
//
// //then
// verify(chain).doFilter(any(ServletRequest.class), any(ServletResponse.class));
// }
//
// @DataProvider(name = "notGETMethodProvider")
// public Object[][] notGETMethodProvider() {
// return new Object[][]{{"POST"},
// {"HEAD"},
// {"DELETE"},
// {"PUT"}
// };
// }
//}
10 changes: 5 additions & 5 deletions assembly/assembly-main/pom.xml
Expand Up @@ -23,11 +23,11 @@
<name>Che IDE :: Assemblies Tomcat</name>
<dependencies>
<!-- FIXME: spi -->
<!--<dependency>-->
<!--<groupId>org.eclipse.che</groupId>-->
<!--<artifactId>assembly-ide-war</artifactId>-->
<!--<type>war</type>-->
<!--</dependency>-->
<dependency>
<groupId>org.eclipse.che</groupId>
<artifactId>assembly-ide-war</artifactId>
<type>war</type>
</dependency>
<dependency>
<groupId>org.eclipse.che</groupId>
<artifactId>assembly-wsagent-server</artifactId>
Expand Down

0 comments on commit c753175

Please sign in to comment.