Вот понравилась мелодия Ephemeral Feeling - Sad Beautiful Piano, решил воспроизвести midi и потом по ней учиться.
Пока вот что получилось.
Может кому-то пригодится.
Если нельзя, но очень хочется, то нужно обязательно и ничего в мире не стоит того, чтобы делать из этого проблему!
package com.services; import org.springframework.stereotype.Component; /** * User: apofig * Date: 11/18/12 * Time: 9:49 PM */ @Component("myService") public class MyService { public String getString() { return "Hello from " + MyService.class.getSimpleName() + "!"; } }Он инджектится в контроллер MyController с помощью @Autowired аннотации Spring'ом.
package com.controller; import com.services.MyService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; /** * User: apofig * Date: 9/20/12 * Time: 1:37 PM */ @Controller @RequestMapping("/") public class MyController { @Autowired private MyService service; @RequestMapping(method = RequestMethod.GET) public String savePlayerGame(Model model) { model.addAttribute("string", service.getString()); return "view"; } }Контроллер отправляет данные на jsp, которая рисует сообщение на экране
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head> <meta http-equiv="Content-Type" content="text/html;"> <title>Main page</title> </head> <body> <c:if test="${string!=null}"> <span id="message">${string}</span> </c:if> <body> </html>
public class IntegrationTest { private String url = "http://localhost:8080/"; private WebDriver driver = new HtmlUnitDriver(true); private MyService service; @Test public void shouldGetMessageFromService() throws IOException, InterruptedException { when(service.getString()).thenReturn("Hi from mock!"); driver.get(url); String message = driver.findElement(By.id("message")).getText(); assertEquals("Hi from mock!", message); } }
Server server = new Server(0); WebAppContext context = new WebAppContext("src/main/webapp", ""); context.addEventListener(new ServletContextListener() { @Override public void contextInitialized(ServletContextEvent sce) ServletContext servletContext = sce.getServletContext(); // вот тут } } server.setHandler(context); server.start(); int port = server.getConnectors()[0].getLocalPort(); String url = "http://localhost:" + port;
WebApplicationContext applicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
private static Object mocking(WebApplicationContext webAppContext, String beanName, boolean isMockOfSpy) { Object realBean = webAppContext.getBean(beanName); AbstractRefreshableApplicationContext context = (AbstractRefreshableApplicationContext) webAppContext; DefaultListableBeanFactory beanFactory = (DefaultListableBeanFactory) context.getBeanFactory(); Object newBean = null; if (isMockOfSpy) { newBean = mock(realBean.getClass()); } else { newBean = spy(realBean); } beanFactory.removeBeanDefinition(beanName); beanFactory.registerSingleton(beanName, newBean); return beanFactory.getBean(beanName); }
Server server = new Server(0); WebAppContext context = new WebAppContext("src/main/webapp", ""); // Spring контекст недуступен context.addEventListener(new ServletContextListener() { @Override public void contextInitialized(ServletContextEvent sce) ServletContext servletContext = sce.getServletContext(); // Spring контекст так же недуступен } } server.setHandler(context); server.start(); int port = server.getConnectors()[0].getLocalPort(); String url = "http://localhost:" + port;Обыно он хранится в _contextAttributes, но тут пока пусто
private ServletContext servletContext; private WebApplicationContext applicationContext; public String start() throws Exception { server = new Server(0); final WebAppContext context = loadWebContext(); context.addEventListener(new ServletContextListener() { @Override public void contextInitialized(ServletContextEvent sce) { servletContext = sce.getServletContext(); context.addEventListener(new ServletContextListener() { @Override public void contextInitialized(ServletContextEvent sce) { applicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext); // тут бины тепленькие, и все мои!!! } @Override public void contextDestroyed(ServletContextEvent sce) { } }); } @Override public void contextDestroyed(ServletContextEvent sce) { } }); server.setHandler(context); server.start(); int port = server.getConnectors()[0].getLocalPort(); String url = "http://localhost:" + port; return url; }Дальше дело техники, вызываем метод
private static Object mocking(WebApplicationContext webAppContext, String beanName, boolean isMockOfSpy) {
public class XIterator implements Iterable<Integer>{ private int from; private int to; private int x; private boolean increase; public XIterator(int from, int to, boolean increase) { if (increase) { this.from = Math.min(from, to); this.to = Math.max(from, to); } else { this.from = Math.max(from, to); this.to = Math.min(from, to); } this.increase = increase; this.x = this.from; } @Override public Iterator<Integer> iterator() { return new Iterator<Integer>() { @Override public boolean hasNext() { if (increase) { return x <= to; } else { return x >= to; } } @Override public Integer next() { if (increase) { return x++; } else { return x--; } } @Override public void remove() { throw new UnsupportedOperationException(); } }; } }Вот тесты для него
public class XIteratorTest { @Test public void increase() { assertIteratorValues(new XIterator(0, 10, true), "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]"); } @Test public void decrease() { assertIteratorValues(new XIterator(0, 10, false), "[10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]"); } @Test public void increaseNegative() { assertIteratorValues(new XIterator(-5, 5, true), "[-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5]"); } private void assertIteratorValues(Iterable<Integer> iterator, String expected) { LinkedList list = new LinkedList(); for (Integer i : iterator) { list.add(i); } assertEquals(expected, list.toString()); } @Test public void decreaseNegative() { assertIteratorValues(new XIterator(-5, 5, false), "[5, 4, 3, 2, 1, 0, -1, -2, -3, -4, -5]"); } @Test public void increaseBadFromTo() { assertIteratorValues(new XIterator(5, -5, true), "[-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5]"); } @Test public void decreaseBadFromTo() { assertIteratorValues(new XIterator(5, -5, false), "[5, 4, 3, 2, 1, 0, -1, -2, -3, -4, -5]"); } @Test public void zeroIterator() { assertIteratorValues(new XIterator(0, 0, false), "[0]"); assertIteratorValues(new XIterator(0, 0, true), "[0]"); } }
"Ты не можешь утвержать, что я вижу крассный цвет так же как и ты, мы всего лишь научились различать его, но видеть мы его можем по-разному. Да, аппаратная часть говорит о некоем сходстве между нами, но видит человек не глазами, а мозгом..."Никто никогда не сможет узнать каким мир вижу я. Даже, если взять во внимание все что я создал, что говорил, как при этом вел себя - все-равно никто и никогда не сможет сказать кто или что такое Саня. Так же и я не могу этого сделать по отношению к окружающим людям. Но все же я имею возможность судить об окружающих. Как так получается?
Из разговоров на перекуре
Нельзя рассмотреть в другом человеке то, чего нет в тебе самом.