]> git.aero2k.de Git - tmp/jakarta-migration.git/blob
eff2255e585fbd58c436aedc0ab778df863bdfae
[tmp/jakarta-migration.git] /
1 package org.collectionspace.services.common.document;\r
2 \r
3 import org.collectionspace.services.common.context.MultipartServiceContext;\r
4 import org.collectionspace.services.common.context.ServiceContext;\r
5 import org.collectionspace.services.common.document.DocumentHandler.Action;\r
6 import org.slf4j.Logger;\r
7 import org.slf4j.LoggerFactory;\r
8 \r
9 // TODO: Auto-generated Javadoc\r
10 /**\r
11  * The Class ValidatorHandlerImpl.\r
12  */\r
13 public abstract class ValidatorHandlerImpl<IT, OT> implements ValidatorHandler<IT, OT> {\r
14 \r
15     /**\r
16      * The logger.\r
17      */\r
18     private final Logger logger = LoggerFactory.getLogger(ValidatorHandlerImpl.class);\r
19     private ServiceContext<IT, OT> ctx;\r
20 \r
21     protected ServiceContext<IT, OT> getServiceContext() {\r
22         return ctx;\r
23     }\r
24     // gets reset by calls to setServiceContext() method\r
25     protected boolean enforceAsserts = true;\r
26 \r
27     public boolean getEnforceAsserts() {\r
28         return enforceAsserts;\r
29     }\r
30 \r
31     public void setEnforceAsserts(ServiceContext<IT, OT> ctx) {\r
32         Boolean disableAssertsAttr = ctx.getServiceBinding().isDisableAsserts();\r
33         if (disableAssertsAttr == null) {\r
34             enforceAsserts = true;\r
35         } else {\r
36             enforceAsserts = !disableAssertsAttr.booleanValue();\r
37         }\r
38     }\r
39 \r
40     protected void setServiceContext(ServiceContext<IT, OT> ctx) {\r
41         this.ctx = ctx;\r
42 \r
43     }\r
44 \r
45     protected void CS_ASSERT(boolean expression, String errorMsg) throws AssertionError {\r
46         if (expression != true) {\r
47             if (errorMsg == null) {\r
48                 errorMsg = "Validation exception occurred in: "\r
49                         + this.getClass().getName();\r
50             }\r
51             throw new AssertionError(errorMsg);\r
52         }\r
53     }\r
54 \r
55     protected void CS_ASSERT(boolean expression) throws AssertionError {\r
56         CS_ASSERT(expression, null);\r
57     }\r
58 \r
59     private void init(ServiceContext<IT, OT> ctx) {\r
60         setEnforceAsserts(ctx);\r
61         setServiceContext(ctx);\r
62     }\r
63 \r
64     /*\r
65      * (non-Javadoc) @see\r
66      * org.collectionspace.services.common.document.ValidatorHandler#validate(org.collectionspace.services.common.document.DocumentHandler.Action,\r
67      * org.collectionspace.services.common.context.ServiceContext)\r
68      */\r
69     @Override\r
70     public void validate(Action action, ServiceContext<IT, OT> ctx)\r
71             throws InvalidDocumentException {\r
72         init(ctx);\r
73 \r
74         switch (action) {\r
75             case CREATE:\r
76                 handleCreate();\r
77                 break;\r
78             case GET:\r
79                 handleGet();\r
80                 break;\r
81             case GET_ALL:\r
82                 handleGetAll();\r
83                 break;\r
84             case UPDATE:\r
85                 handleUpdate();\r
86                 break;\r
87             case DELETE:\r
88                 handleDelete();\r
89                 break;\r
90             default:\r
91                 throw new UnsupportedOperationException("ValidatorHandlerImpl: Unknown action = "\r
92                         + action);\r
93         }\r
94     }\r
95 \r
96     protected boolean enforceAsserts() {\r
97         return !ctx.getServiceBinding().isDisableAsserts();\r
98     }\r
99 \r
100     protected Object getCommonPart() {\r
101         Object result = null;\r
102 \r
103         try {\r
104             MultipartServiceContext multiPartCtx = (MultipartServiceContext) getServiceContext();\r
105             result = multiPartCtx.getInputPart(ctx.getCommonPartLabel(),\r
106                     getCommonPartClass());\r
107         } catch (Exception e) {\r
108             if (logger.isDebugEnabled() == true) {\r
109                 logger.debug("Could not extract common part from multipart input.", e);\r
110             }\r
111         }\r
112 \r
113         return result;\r
114     }\r
115 \r
116     abstract protected Class<?> getCommonPartClass();\r
117 \r
118     /**\r
119      * Handle create.\r
120      *\r
121      * @param ctx the ctx\r
122      */\r
123     abstract protected void handleCreate() throws InvalidDocumentException;\r
124 \r
125     /**\r
126      * Handle get.\r
127      *\r
128      * @param ctx the ctx\r
129      */\r
130     abstract protected void handleGet() throws InvalidDocumentException;\r
131 \r
132     /**\r
133      * Handle get all.\r
134      *\r
135      * @param ctx the ctx\r
136      */\r
137     abstract protected void handleGetAll() throws InvalidDocumentException;\r
138 \r
139     /**\r
140      * Handle update.\r
141      *\r
142      * @param ctx the ctx\r
143      */\r
144     abstract protected void handleUpdate() throws InvalidDocumentException;\r
145 \r
146     /**\r
147      * Handle delete.\r
148      *\r
149      * @param ctx the ctx\r
150      */\r
151     abstract protected void handleDelete() throws InvalidDocumentException;\r
152 }