Whiteship's Note


[Spring 3.0 & Atlassian] RestTemplate으로 Confluence의 Space 목록 가져오기

모하니?/Coding : 2010.03.26 00:51


public class ConfluenceRestTest {

    public static final String SPACE_LIST_URL = "http://dev.springsprout.org/wiki/rest/prototype/1/space?os_authType=basic";

    /**
     */
    @Test
    public void testGetWikiSpaceList() {
        RestTemplate restTemplate = new RestTemplate();
        String result = restTemplate.execute(SPACE_LIST_URL, HttpMethod.GET,
                new JsonRestRequestCallBack(),
                new BodyToStringRestResponseExtractor());
        System.out.println(result);
    }

    static class JsonRestRequestCallBack implements RequestCallback {
        public void doWithRequest(ClientHttpRequest clientHttpRequest) throws IOException {
            HttpHeaders headers = clientHttpRequest.getHeaders();
            headers.add("Authorization", "Basic XXXXXXXX(base64 encoded username:passwd)");
            headers.add("Accept", "application/json");
        }
    }

    static class BodyToStringRestResponseExtractor implements ResponseExtractor<String> {

        public String extractData(ClientHttpResponse clientHttpResponse) throws IOException {
            return convertStreamToString(clientHttpResponse.getBody());
        }
        ....
    }

}

봄싹 위키를 컨플루언스로 바꾸었기 때문에 기존 메뉴를 컨플루언스에 있는 정보를 끌어다 보여주는 것으로 바꾸려고 합니다. 그래서 파일럿(?) 겸사해서 코딩을 해봤는데 잘 됐네요.

{"expand":"space","space":[{"name":"개발툴","key":"DTL","link":{"rel":"self","href":"http://dev.springsprout.org/wiki/rest/prototype/1/space/DTL"},"description":"개발툴 관련 내용을 정리하는 공간입니다."},{"name":"베타리딩","key":"BTR","link":{"rel":"self","href":"http://dev.springsprout.org/wiki/rest/prototype/1/space/BTR"},"description":"봄싹 베타리딩 관련 공간입니다."},{"name":"봄싹 Modules","key":"BSM","link":{"rel":"self","href":"http://dev.springsprout.org/wiki/rest/prototype/1/space/BSM"},"description":"봄싹 Module과 관련된 정보를 정리하는 공간입니다."},{"name":"봄싹 개발","key":"SSD","link":{"rel":"self","href":"http://dev.springsprout.org/wiki/rest/prototype/1/space/SSD"},"description":"봄싹에서 진행하는 개발과 관련된 정보를 정리하는 공간입니다."},{"name":"스프링 3.0 레퍼런스 번역","key":"SRK","link":{"rel":"self","href":"http://dev.springsprout.org/wiki/rest/prototype/1/space/SRK"},"description":"스프링 3.0 레퍼런스를 번역하는 공간입니다."},{"name":"스프링 시큐리티 3.0 레퍼런스 번역","key":"springsecurity","link":{"rel":"self","href":"http://dev.springsprout.org/wiki/rest/prototype/1/space/springsecurity"},"description":""},{"name":"스프링소스 블로그 번역","key":"SBK","link":{"rel":"self","href":"http://dev.springsprout.org/wiki/rest/prototype/1/space/SBK"},"description":"스프링소스 블로그를 번역하는 공간입니다."},{"name":"연습장","key":"ds","link":{"rel":"self","href":"http://dev.springsprout.org/wiki/rest/prototype/1/space/ds"},"description":"봄싹 위키 사용법을 익히는 공간입니다."},{"name":"자바","key":"JAVA","link":{"rel":"self","href":"http://dev.springsprout.org/wiki/rest/prototype/1/space/JAVA"},"description":"자바 학습 공간입니다."}]}

막상 해보고 나니 고민이 생기네요. "저 작업을 뷰에서 할 것이냐 서버단에서 할 것이냐?"

뷰에서 하면 저 페이지로 이동 할 때 마다 요청을 보낼테니 Confluence 응답이 늦어지면 문제고 Confluence 입장에서 부담이 될 수도 있고, Confluence가 죽었을땐 위키 페이지까지 마비가 되지만 구현하는 입장에선 뷰 코드만 지지고 볶으면 되니까 간단할 것 같은데..

서버단에서 하면 DB에 저장해두거나 캐싱을 해둘 수 있으니 Confluence의 부담도 덜고 Confluence가 죽어도 위키 정보는 보여줄 수 있지만 구현하면서 이것 저것 신경쓸게 많아지네;; 정보를 읽어올 주기, 배치로 돌릴 것이냐? JSON말고 XML로 받아온다음 OXM을 이용해서 XML->Object로 바로 변환해버리는 ResponseExtracter를 만들까나.. 캐싱은 이미 Ehcache를 하이버 땜시 쓰고 있으니 캐싱도 해보고?

흠.. 서버단에서 할까나 어쩔까나.. Confluence가 죽어있으면 어차피 봄싹 Wiki에서 목록 본다음에 링크 클릭해도 이동을 못하니까 그냥.. 뷰에서 읽을까나.. +_+ 그럼 나 머하러 RestTemplate 사용한거지.. @_@.. 기왕에 썼으니까 OXM도 적용해서 서버 단에서 해버렷?ㅋ 
top


[Atlassian Connector] IntelliJ 플러그인

Good Tools : 2009.11.05 22:57


 아틀라시안 제품들과 IntelliJ 플러그인을 연동했는데... 이건 뭐.. 최강조합입니다. 마치 디아블로에서 큐브에 아이템 몇개 넣고 돌려서 좀 더 희귀한 아이템을 만들어 내듯이.. 지금 전 인텔리J와 아틀라시안 제품들을 조합해서 Agile 개발에 가장 적합한 개발 환경을 세팅했습니다.

인텔리J의 장점 중 하나를 꼽으라면 플러그인 설치가 편하고 안정적이라는 것을 꼽고 싶은데요. 안써본 분들에게 설명하자니 귀찮고, 써본분들에게는 딱히 설명드릴께 없기 때문에 패스하겠습니다.


저런식으로 설치한 아틀라시안 제품들과 연결을 해주고, 잘 쓰면 됩니다.


밤부 플러긴은 기본적으로 빌드가 성공했나 실패했나를 알려주는데, 맨 아래 녹색 모양의 조그만 아틀라시안 아니콘이 그 역할을 해줍니다.

그밖에 여러 기능들과 사용법은 아래 링크에 있습니다.

http://confluence.atlassian.com/display/IDEPLUGIN/Working+with+Bamboo+Builds+in+IDEA


지라 플러긴은 주로 이슈를 보고, 진행하거나, 멈추거나, 마무리 하거나, 새 이슈를 등록할 수 있습니다.

그밖에 여러 기능과 사용법은 아래 링크에 있습니다.

http://confluence.atlassian.com/display/IDEPLUGIN/Working+with+JIRA+Issues+in+IDEA

ps: 이클립스에서 IntelliJ로 갈아타길 정말 잘한것 같아요. 너무 안정적이에요. 인텔리J가 메모리 때문에 뻗는다 하더라도, 절대로 깨져버린 이클립스처럼 피곤하진 않습니다. 플러그인 설치도 간편하고 말이죠. 인텔리J 킹왕짱!!

내일은 Crucible과 FishEye도 설치하고 연동해야겠군요.
아.. 아틀라시안 제품 간에도 연동 시켜줘야겠네요.

top


[GreenHopper] Atlassian JIRA의 애자일 개발 플러그인

Good Tools : 2009.11.05 08:57


http://www.atlassian.com/software/greenhopper/


스프링 이슈 트래커를 보다가 카드 모양으로 생긴 이슈 관리가 있길래 뭔가 봤더니, GreenHopper라는 플러그인이더군요. 완전히 새로운 UI로 이슈 관리를 할 수 있습니다. 드래그 앤 드랍으로 우선 순위를 변경한다던지, 카드 목록 화면에서 바로 바로 이슈를 수정한다던지 말이죠. 제가 궁금한건 기간과 난이도에 대한 추정을 하고, 그걸 통계내주는 기능이 있느냐인데.. 일단은 한번 설치해 봐야겠습니다.


top


[이직해야지] 들어가고 싶은 회사 Atlassian

모하니?/Thinking : 2009.10.21 16:13


http://seek.com.au/job/senior-java-developers/sydney-inner/16089383/88/1/



컨플루언스(위키), 지라(이슈트래커), 밤부(CI 툴), 클로버(커버리지 툴), 피쉬아이(소스코드 뷰어)를 만들고 가꾸고 있는 회사입니다. 하나같이 멋진 제품 들이죠. 최신버전 JIRA에는 Agile에서 사용하는 카드 형태의 이슈 관리도 지원하는 것 같은데... 참.. 발전이 끊이질 않네요.

열공해서 꼭 이직 해야겠습니다.

파이팅!!
top


Thank you. Atlassian!!

Good Tools : 2008.09.17 16:36


아뜰라시안한테 오픈소스 라이선스를 받았습니다. 꺄오~ Confluence, Jira, Bamboo, Clover. Crucible을 마음껏 이용할 수 있게 됐네요. 캬캬캬. 개인용은 언제나 공짜였지만, 사용자를 딱 2명으로 제한해둬서 정말 개인밖에 못 썼는데, 오픈소스 라이선스는 사용자가 무제한입니다.

OpenSprout를 공개할 날도 얼마 남지 않았네요. 이제 기반은 다 마련됐고, 코드랑, 예제까지 준비해뒀지만, 커스텀 태그 전면 교체 작업이 남아 있어서 좀 시간이 걸리 것 같습니다. :)
top