목차 >> Core +- Glue Service +- GlueContext ----+- EventType ----+- ContentType |
GlueContext는 Map구조의 내부저장소 interface입니다.
GlueContext는 임시 데이타 저장소로 사용되며, Glue Service 단위로 Control layer에서 생성됩니다.
그림 : GlueContext |
Glue Service 실행시 Event Data의 유형은 웹, 포틀릿, 그외의 것으로 구분하고 있습니다. 그에 따른 GlueContext 는 다음을 사용합니다.
웹(서블릿과 포틀릿)을 제외한 Data를 담는 저장소로 Root Map와 Message List를 갖습니다.
그림 : GlueDefaultContext |
GlueContext ctx = new GlueDefaultContext(); ctx.put(GlueBizControlConstants.SERVICE_NAME, "hello-service"); // ctx.put(key, value);
웹브라우저(서블릿)에서 발생되는 Data 를 담는 저장소로 HttpRequest(ServletRequest)의 Parameter와 Attribute와 HttpSession, Cookie, Header Data를 별도의 Map 형태로 포함하며, MultipartRequest를 갖습니다.
GlueContext ctx = new GlueWebContext();//EventType.WEB_BROWSER 임 ctx.put(GlueBizControlConstants.SERVICE_NAME, "hello-service"); // ctx.putAll( dataMap, ContentType ); // ctx.setMultiPartRequest( multiPart )
웹브라우저(포틀릿)에서 발생되는 Data 를 담는 저장소로 PortletRequest의 Public Parameter, Private Parameter, Attribute와 PortletSession, ApplicationSession, Cookie, Header Data를 별도의 Map으로 갖습니다.
GlueContext ctx = new GluePortletContext();//EventType.WEB_BROWSER 임 ctx.put(GlueBizControlConstants.SERVICE_NAME, "hello-service"); // ctx.putAll( dataMap, ContentType );
EventType 에는 DEFAULT, WEB_BROWSER, EAI_SERVER, EDGE_SERVER가 있습니다. GlueContext 생성시 EventType을 명시적으로 지정할 수 있습니다. com.poscoict.glueframework.web.control.portlet.GlueSimpleController 와 com.poscoict.glueframework.web.control.spring.GlueSimpleController 의 경우는 GlueContext 생성시 EventType은 WEB_BROWSER로 지정하고 있으며,
com.poscoict.glueframework.web.GlueHttpReceiverAdapter 의 경우는 EventType은 EAI_SERVER으로 지정하고 있습니다.
GlueContext ctx = new GlueDefaultContext(EventType.DEFAULT);
ContentType은 GlueWebContext와 GluePortletContext의 Root Map을 제외한 부가적인 Map의 유형을 나타냅니다.
GlueWebContext 의 ContentType 은 다음과 같습니다.
다음은 ContentType 을 이용해서 GlueContext에서 data에 접근하는 코드 예제입니다.
//GlueWebContext ctx = . . . String data[] = (String[])ctx.get(key, WebContentType.HTTP_REQUEST_PARAM); // 또는 String data[] = ctx.getAndTryToCast( key, String[], WebContentType.HTTP_REQUEST_PARAM );
//GlueWebContext ctx = . . . Object data = ctx.get(key); //또는 Class<T> data = ctx.getAndTryToCast( key, Class<T>) 형태로.. String data = ctx.getAndTryToCast( key, String);
GluePortletContext 의 ContentType 은 다음과 같습니다.
다음은 ContentType 을 이용해서 GlueContext에서 data에 접근하는 코드 예제입니다.
//GluePortletContext ctx = . . . String data[] = ctx.get(key, PortletContentType.PORTLET_REQUEST_PARAM_PUBLIC); // 또는 String data[] = ctx.getAndTryToCast( key, String[], PortletContentType.PORTLET_REQUEST_PARAM_PUBLIC );
//GluePortletContext ctx = . . . ctx.get(key); //또는 Class<T> data = ctx.getAndTryToCast( key, Class<T>) 형태로.. String data = ctx.getAndTryToCast( key, String);
Control Layer에서 GlueContext 생성 후 input data 등록시 그 성격에 따라 담을 수 있습니다.
다음은 GlueContext 생성시 ContentType 을 이용해서 유형별로 data를 담는 코드 예제입니다.
GlueContext ctx = new GlueWebContext();//EventType.WEB_BROWSER 임 ctx.put( key, value1 ); Map paramMap = ...; paramMap.put( key, value2 ); ctx.putAll( paramMap, WebContentType.HTTP_REQUEST_PARAM ); Map attrMap = ...; attrMap.put( key, value3 ); ctx.putAll( attrMap, WebContentType.HTTP_REQUEST_PARAM );
Activity Layer에서는 ContentType를 통해 Data에 접근 할 수 있습니다. ContentType이 주어지지 않는 경우 key 탐색 우선 순위를 따라 일부 ContentType 의 Data에 접근 할 수 있습니다.
Object value = ctx.get(key); String[] param = (String[])ctx.get(key, WebContentType.HTTP_REQUEST_PARAM); Object attr = ctx.get(key, WebContentType.HTTP_REQUEST_ATTR);