Whiteship's Note

[BlackBerry] 헬로 Whiteship

모하니?/Coding : 2010.08.11 13:55



아이콘은 무료 아이콘 사이트에서 하나 다운 받았고.. 초간단 앱은 역시 헬로 월드.. 

public class HelloWorld extends UiApplication {
final class HelloWorldScreen extends MainScreen {
public HelloWorldScreen() {
super();
LabelField title = new LabelField("Hello App", LabelField.ELLIPSIS | LabelField.USE_ALL_WIDTH);
setTitle(title);
add(new RichTextField("Hello Whiteship!!"));
}
public boolean onClose() {
Dialog.alert("바이바이!");
System.exit(0);
return true;
}
}

public static void main(String[] args) {
HelloWorld app = new HelloWorld();
app.enterEventDispatcher();
}
public HelloWorld() {
pushScreen(new HelloWorldScreen());
}

}

일단 앱은 UiApplication을 상속 받아서 만들고 우선.. 맨 아래에 있는 메서드 pushScreen을 사용해서 MainScreen을 상속해서 만든 화면을 뿌려주고,, enterEventDispatcher 메서드를 호출해서 이 앱에서 발생하는 이벤트들을 감지하도록 설정하는 것 같네요.

흠냐.. 뭘 만들어 볼까나..
저작자 표시
신고
top


[IBM DW 스크린캐스팅] 오브젝트와 의존관계 그리고 스프링3



출처 및 소스 코드: https://www.ibm.com/developerworks/mydeveloperworks/blogs/9e635b49-09e9-4c23-8999-a4d461aeace2/entry/264?lang=en





에이콘 출판사의 토비의 스프링 3의 1장 내용을 스크린캐스팅으로 찍어 봤습니다. 상당히 많은 내용을 압축해서 찍은거라 생략한 설명이나 과정이 많습니다. 책 내용에 대한 일종의 프리뷰라고 생각하시고 자세한 내용은 꼭 책으로 확인하시기 바랍니다.

ps: 오늘 토비님께서 블로그에 올려주셨더니 조회수가 확 뛰었네요. 캬..


저작자 표시
신고
top


[인텔리J] 예외 찍기 방지용 템플릿 수정

Good Tools : 2010.08.10 14:04



이렇게 간단한 템플릿 수정 만으로 예외 먹는 기본 템플릿 코드를 수정할 수 있다. 이클립스에도 try-catch 문 자동 생성시 catch 문에서 예외를 냠냠 하게 되어 있을텐데.. 그보다는 차라리 저렇게 RuntimeException으로 변화해서 던져주는게 더 낫다.

예외를 먹지 않으니까 예외가 발생한 지점 찾기도 좋을 뿐더러, RuntimeException으로 변환해주면 저 API를 사용하는 입장에서 잡아도 되고 안잡아도 되고 선택권이 생기니까 더 좋다. 머.. 잡아서 확실하게 예외를 어떻게 처리할 방법이 있다면 그렇게 처리하는게 더 좋겠지만 대부분은..흠냐..
저작자 표시
신고
top


[스프링 테스트] 웹 테스트용 WebApplicationContext에 request, session 스코프 빈 등록하기

Spring/3.0 : 2010.08.10 12:23


Spring, Junit 에서 session, request scope bean 을 사용하기 

오리대마왕님께서 올려주신 글을 보니 '토비의 스프링 3'에 나오는 웹 테스트 코드가 생각나서 그냥 session 스코프 빈을 한번 등록해 봤습니다. 오리대마왕님 테스트의 주 목적도 이거였을 텐데.. 컨트롤러에 AOP를 등록하고, 현재 request를 담고 있는 HttpRequestHolder를 request 스코프로 만든 걸 봤는데... 테스트 목적에 비해 코드가 다소 장황한 것 같습니다. (사실 올려주신 코드에서 HttpRequestHolder를 request 스코프로 등록하지 않고 그냥 singleton으로 써도 결과는 똑같더군요. 현재 요청을 가로 채고 있던 녀석은 HttpRequestHolder를 request 스코프로 했기 떄문이 아니라 RequestContextHolder 때문인것 같더군요. 그리고 컨트롤러에 설정한 AOP도 그냥 스프링 인터셉터를 쓰시면 더 간단하게.. 처리가 가능한.. 암튼..)

public class SimpleRequestScopeTest {

    @Scope(value = "request", proxyMode = ScopedProxyMode.TARGET_CLASS)
    static class RequestScopedBean {}

    @Test
    public void simpleReqestScopeBean() throws ServletException {
        ConfigurableDispatcherServlet dispatcherServlet = new ConfigurableDispatcherServlet();
        dispatcherServlet.setClasses(RequestScopedBean.class);
        dispatcherServlet.init(new MockServletConfig("spring"));

        WebApplicationContext wac = dispatcherServlet.getWebApplicationContext();
        RequestScopedBean rsb = wac.getBean(RequestScopedBean.class);
        assertThat(rsb, is(notNullValue()));
    }
}

이게 다입니다. RequestScopedBean이라는 클래스를 만들고, 스코프를 설정해준 다음 ConfigurableDispatcherSevlet에 전달해서 빈으로 등록해주었고, DS에서 WAC를 가져온다음 RSB를 getBean 해서 null이 아닌지 확인하면 끝입니다.

단순 빈 등록만 확인하려면 WebApplicationContext를 직접 만들어 쓰면 되겠지만, 여기서는 웹 테스트 용도로 작성하는 테스트라고 가정하면, 요청 매핑이나, 실행 결과 ModelAndView등을 확인하려면 역시 DispatcherServlet을 써먹어야 합니다. 하지만 DispatcherServlet은 ModelAndVIew를 밖으로노출해주지 않죠. 그럴 필요도 없구요. 그래서 테스트용으로 DispatcherServlet을 확장한 것이 바로 저기에 보이는 ConfigurableDS입니다. 이 CDS를 사용한 초단단 웹 @MVC 테스트는 다음과 같습니다.

public class HelloControllerTest {
@Test
public void helloController() throws ServletException, IOException {
ConfigurableDispatcherServlet servlet = new ConfigurableDispatcherServlet();
servlet.setRelativeLocations(getClass(), "spring-servlet.xml");
servlet.setClasses(HelloSpring.class);
servlet.init(new MockServletConfig("spring"));
MockHttpServletRequest req = new MockHttpServletRequest("GET", "/hello");
req.addParameter("name", "Spring");
MockHttpServletResponse res = new MockHttpServletResponse();
servlet.service(req, res);
ModelAndView mav = servlet.getModelAndView();
assertThat(mav.getViewName(), is("/WEB-INF/view/hello.jsp"));
assertThat((String)mav.getModel().get("message"), is("Hello Spring"));
}
}
(출처, 토비의 스프링 3 예제 코드)

그러나. 이것 마저도 복잡합니다. ConfigurableDispatcherServlet 를 만들고 설정한 다음, Request에 URL을 설정하고 그 결과로 나오는 MAV를 확인하는 패턴이 고정적입니다. 따라서 이걸 더 간편하게 사용할 수 있도록 만든 클래스가 있는데.. 그게 AbstractDispatcherServletTest 입니다. ConfigurableDispatcherServlet과 AbstractDispatcherServletTest는 토비의 스프링 3에서 직접 보실 수도 있고, 예제 코드를 다운 받아 보실 수도 있는데 설명이 들어있는 책으로 보시는걸 추천해 드립니다.

여기서는 간단한 사용법만 보여드리자면;;

public class SimpleMVCTest extends AbstractDispatcherServletTest {
@Test
public void simpleHandler() throws ServletException, IOException {
this.setClasses(SimpleHandler.class, SimpleViewHandler.class)
.runService("/hi");
assertThat(this.response.getContentAsString(), is("hi"));
this.runService("/view");
assertThat(this.getModelAndView().getViewName(), is("view.jsp"));
}

@Controller static class SimpleHandler {
@RequestMapping("/hi") @ResponseBody 
public String hi() { return "hi"; }
}
@Controller static class SimpleViewHandler {
@RequestMapping("/view")
public String view() { return "view.jsp"; }
}
}
(출처, 토비의 스프링 3 예제 코드)

이런식으로 초간단 MVC 테스트를 만들 수 있습니다.
저작자 표시
신고
top


JAOO 2010 YOW는 호주 브리스베인에서 12월 6~7일 컨퍼런스 8~9일 워크샵

모하니?/Planning : 2010.08.09 11:05


JAva Object Oriented 소프트웨어 개발 컨퍼런스란 뜻에서 JAOO라고 한다.

http://channel9.msdn.com/posts/Charles/JAOO-2007-Kresten-Krab-Thorup-JAOO-What-How-Why/

컨퍼런스 세부 일정은 아직 안나온듯.. 저기도 가고 싶다. 미국에서 하는 스프링 세미나 보다 호주에서 하는 YOW가 더 가보고 싶다. 이유는 워크샵 때문에.. 직접 실습 해본다고.. 캬.. 그리고 주제도 완전 다양하다.

나중에 스케줄 표라도 나오면 다시 수정해서 올려야지. 지금을 일단 기록용.
저작자 표시
신고
top

TAG JAOO



: 1 : 2 : 3 : 4 : 5 : 6 : ··· : 528 :





티스토리 툴바