블로그 이미지
Max.

calendar

          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

Notice

'spirng-roo-shell'에 해당되는 글 1

  1. 2009.05.22 spirng-roo-shell, spring-roo-shell-jline 프로젝트 보기
2009.05.22 21:11 개발관련
spirng-roo-shell 프로젝트

org.springframework.roo.shell.AvailableCommandsConverter.java

이 파일은 상단에 @ScopeDevelopmentShell 가 붙어 있는데, 이것은 shell에서 개발할때의 범위에 속하는 클래스라는 것을 뜻합니다. IDE와는 관계가 없겠지요. ROO는 이렇게 해당 클래스가 어느범위에 속하고 실행되는지 구분하는것 같습니다. 아무튼 그래서 이것의 역할을 좀더 명확하게 이해할수 있게 해줍니다.
AvailableCommandsConverter는 Converter의 구현체인데, 사용가능한 모든 컨버터 명령을 넘겨받은 completions 변수에 @CliCommand 어노테이션이 붙은 컨버터를 추가시켜주는 getAllPossibleValues 구현체가 주요기능 입니다. 나머지 convertFromText,supports는 단순히 인터페이스를 구현한 정도 입니다.

@CliAvailabilityIndicator.java, @CliCommand.java, @CliOption.java

이것들은 앞서 보왔던 명령어 클래스(CommandMarker 구현체)에 붙여서 명령어들의 역할을 구분짓게합니다. CliOption은 하나의 명령에서 동시에 하나 이상 쓰일수 있으니 쓰레드 관련 파일이 두개 있습니다.

앞서 보왔던 Shell의 중요 요소인 CommandMarker, Converter 인터페이스도 이 프로젝트에 위치합니다. 가장 중요한 Shell.java는 ShellStatusProvider, ShellPromptAccessor를 확장한 인터페이스로 여기에 위치하고 있습다. 그밖에 중요한 클래스로 SimpleParser가 있습니다. 코드가 너무 길어서 자세히 보질 못했습니다.

이 프로젝트에 중요한것은 컨버터들이 여기에 존재한다는 것입니다. org.springframework.roo.shell.converters 패키지 안에 모든 컨버터 들이 존재 합니다. 컨버터와 달리 Command들은 각각의 addon 프로젝트에 존재합니다.(물론 addon 이외에도 존재 합니다.)

이외에 또하나의 패키지가 있는데 그것은 event입니다. 아무래도 shell이니 리스너가 있어야 겠죠. 해당 구현은 roo.shell.jline 프로젝트에 있을것입니다.

spring-roo-shell-jline 프로젝트

이 프로젝트는 비교적 단순합니다. shell프로젝트의 인터페이스를 구현한 구현체와 JLine과 연동을 위한 아답터 클래스 그기로, 로그 핸들러 정도 입니다. 앞서서 본것처럼 ROO 하나의 쉘만 사용할수 있습니다. 현재는 JLine만 공식적으로 제공하고 있으나, 사용자에 따라서 바꿀수 있게 되어 있습니다. 물론 관련 구현체나 아답터 클래스를 만들어야 겠지요.

워낙 실력이 안되니, 이렇게 대충대충 보고 있습니다. 나중에 특정 소스를 수정해서 커스터마이징 한다면, 그때 좀더 자세히 보는 시간을 가져야 겠습니다. 이렇게 해서 3개의 프로젝트를 대충대충 훑어봤습니다. 뭐 여기까지는 대략 이렇다라는것만 알고, 실제 건들 소스는 없는것 같습니다. 소스코드를 건들 요지가 있는것은 addon 프로젝트일텐데, 이것은 가장 나중에 보기로 하고, 다음은 그밖의 프로젝트들의 역할만 이해하는 수준에서 봐야 겠습니다. 아마도, roo-classpath, file, model, metadata, process 등의 프로젝트일듯 합니다.
신고
posted by Max.
prev 1 next