Revision 5337
Added by berkley almost 14 years ago
CrudService.java | ||
---|---|---|
91 | 91 |
*/ |
92 | 92 |
public class CrudService implements MemberNodeCrud { |
93 | 93 |
|
94 |
private ServletContext servletContext; |
|
94 |
/*private ServletContext servletContext;
|
|
95 | 95 |
private HttpServletRequest request; |
96 |
private HttpServletResponse response; |
|
96 |
private HttpServletResponse response;*/ |
|
97 |
|
|
98 |
private static CrudService crudService = null; |
|
97 | 99 |
|
98 | 100 |
private MetacatHandler handler; |
99 | 101 |
private Hashtable<String, String[]> params; |
100 | 102 |
Logger logMetacat = null; |
103 |
|
|
104 |
private String metacatUrl; |
|
101 | 105 |
|
102 | 106 |
/** |
107 |
* singleton accessor |
|
108 |
*/ |
|
109 |
public static CrudService getInstance() |
|
110 |
{ |
|
111 |
if(crudService == null) |
|
112 |
{ |
|
113 |
crudService = new CrudService(); |
|
114 |
} |
|
115 |
|
|
116 |
return crudService; |
|
117 |
} |
|
118 |
|
|
119 |
/** |
|
103 | 120 |
* Initializes new instance by setting servlet context,request and response. |
104 | 121 |
* TODO: remove dependency on Servlet infrastructure |
105 | 122 |
* TODO: Make this a real service, and make it a Singleton |
106 | 123 |
*/ |
107 |
public CrudService(ServletContext servletContext, |
|
108 |
HttpServletRequest request, HttpServletResponse response) { |
|
124 |
public CrudService() { |
|
109 | 125 |
//change crud service into a singleton. dont pass servlet data structures here |
110 |
|
|
111 |
this.servletContext = servletContext; |
|
126 |
logMetacat = Logger.getLogger(CrudService.class); |
|
127 |
try |
|
128 |
{ |
|
129 |
String server = PropertyService.getProperty("server.name"); |
|
130 |
String port = PropertyService.getProperty("server.httpPort"); |
|
131 |
String context = PropertyService.getProperty("application.context"); |
|
132 |
metacatUrl = "http://" + server + ":" + port + "/" + context; |
|
133 |
logMetacat.debug("Initializing CrudService with url " + metacatUrl); |
|
134 |
} |
|
135 |
catch(Exception e) |
|
136 |
{ |
|
137 |
logMetacat.error("Could not find servlet url in CrudService: " + e.getMessage()); |
|
138 |
e.printStackTrace(); |
|
139 |
throw new RuntimeException("Error getting servlet url in CrudService: " + e.getMessage()); |
|
140 |
} |
|
141 |
|
|
142 |
/*this.servletContext = servletContext; |
|
112 | 143 |
this.request = request; |
113 |
this.response = response; |
|
114 |
logMetacat = Logger.getLogger(CrudService.class); |
|
144 |
this.response = response;*/ |
|
145 |
|
|
146 |
params = new Hashtable<String, String[]>(); |
|
115 | 147 |
|
116 |
handler = new MetacatHandler(this.servletContext, new Timer()); |
|
117 |
initParams(); |
|
118 |
// loadSessionData(); |
|
148 |
handler = new MetacatHandler(new Timer()); |
|
149 |
|
|
119 | 150 |
} |
120 |
|
|
151 |
|
|
121 | 152 |
/** |
122 |
* copies request parameters to a Hashtable which is given as argument to |
|
123 |
* native MetacatHandler functions |
|
153 |
* return the context url CrudService is using. |
|
124 | 154 |
*/ |
125 |
private void initParams() { |
|
126 |
|
|
127 |
String name = null; |
|
128 |
String[] value = null; |
|
129 |
params = new Hashtable<String, String[]>(); |
|
155 |
public String getContextUrl() |
|
156 |
{ |
|
157 |
return metacatUrl; |
|
158 |
} |
|
159 |
|
|
160 |
/** |
|
161 |
* set the params for this service from an HttpServletRequest param list |
|
162 |
*/ |
|
163 |
public void setParamsFromRequest(HttpServletRequest request) |
|
164 |
{ |
|
130 | 165 |
Enumeration paramlist = request.getParameterNames(); |
131 | 166 |
while (paramlist.hasMoreElements()) { |
132 |
name = (String) paramlist.nextElement(); |
|
133 |
value = request.getParameterValues(name);
|
|
167 |
String name = (String) paramlist.nextElement();
|
|
168 |
String[] value = (String[])request.getParameterValues(name);
|
|
134 | 169 |
params.put(name, value); |
135 | 170 |
} |
136 | 171 |
} |
137 | 172 |
|
173 |
/** |
|
174 |
* set the parameter values needed for this request |
|
175 |
*/ |
|
176 |
public void setParameter(String name, String[] value) |
|
177 |
{ |
|
178 |
params.put(name, value); |
|
179 |
} |
|
180 |
|
|
138 | 181 |
public Identifier create(AuthToken token, Identifier guid, |
139 | 182 |
InputStream object, SystemMetadata sysmeta) throws InvalidToken, |
140 | 183 |
ServiceFailure, NotAuthorized, IdentifierNotUnique, UnsupportedType, |
141 | 184 |
InsufficientResources, InvalidSystemMetadata, NotImplemented { |
142 | 185 |
|
143 | 186 |
logMetacat.debug("Starting CrudService.create()..."); |
187 |
System.out.println("sysmeta object format: " + sysmeta.getObjectFormat()); |
|
144 | 188 |
|
145 | 189 |
// authenticate & get user info |
146 | 190 |
SessionData sessionData = getSessionData(token); |
... | ... | |
222 | 266 |
public String produce(final OutputStream dataSink) throws Exception { |
223 | 267 |
|
224 | 268 |
try { |
225 |
handler.readFromMetacat(request.getRemoteAddr(), null,
|
|
269 |
handler.readFromMetacat(/*request.getRemoteAddr()*/metacatUrl, null,
|
|
226 | 270 |
dataSink, localId, "xml", |
227 | 271 |
sessionData.getUserName(), |
228 | 272 |
sessionData.getGroupNames(), true, params); |
... | ... | |
298 | 342 |
@Override |
299 | 343 |
public String produce(final OutputStream dataSink) throws Exception { |
300 | 344 |
try { |
301 |
handler.readFromMetacat(request.getRemoteAddr(), null,
|
|
345 |
handler.readFromMetacat(/*request.getRemoteAddr()*/metacatUrl, null,
|
|
302 | 346 |
dataSink, localId, "xml", |
303 | 347 |
sessionData.getUserName(), |
304 | 348 |
sessionData.getGroupNames(), true, params); |
... | ... | |
374 | 418 |
*/ |
375 | 419 |
private boolean isScienceMetadata(SystemMetadata sysmeta) { |
376 | 420 |
boolean scimeta = false; |
421 |
System.out.println("sysmeta: " + sysmeta.toString()); |
|
422 |
System.out.println("sysmeta format: " + sysmeta.getObjectFormat()); |
|
377 | 423 |
switch (sysmeta.getObjectFormat()) { |
378 | 424 |
case EML_2_1_0: scimeta = true; break; |
379 | 425 |
case EML_2_0_1: scimeta = true; break; |
... | ... | |
441 | 487 |
} |
442 | 488 |
|
443 | 489 |
logMetacat.debug("Logging the creation event."); |
444 |
EventLog.getInstance().log(request.getRemoteAddr(),
|
|
490 |
EventLog.getInstance().log(/*request.getRemoteAddr()*/metacatUrl,
|
|
445 | 491 |
username, localId, "create"); |
446 | 492 |
|
447 | 493 |
// Schedule replication for this data file |
... | ... | |
533 | 579 |
// TODO: refactor handleInsertOrUpdateAction() to not output XML directly |
534 | 580 |
// onto output stream, or alternatively, capture that and parse it to |
535 | 581 |
// generate the right exceptions |
536 |
ByteArrayOutputStream output = new ByteArrayOutputStream(); |
|
537 |
PrintWriter pw = new PrintWriter(output); |
|
538 |
handler.handleInsertOrUpdateAction(request.getRemoteAddr(), response, |
|
539 |
pw, params, sessionData.getUserName(), |
|
540 |
sessionData.getGroupNames()); |
|
541 |
String outputS = new String(output.toByteArray()); |
|
542 |
logMetacat.debug("CrudService.insertDocument - Metacat returned: " + outputS); |
|
582 |
//ByteArrayOutputStream output = new ByteArrayOutputStream(); |
|
583 |
//PrintWriter pw = new PrintWriter(output); |
|
584 |
String result = handler.handleInsertOrUpdateAction(/*request.getRemoteAddr()*/metacatUrl, null, |
|
585 |
null, params, sessionData.getUserName(), sessionData.getGroupNames()); |
|
586 |
//String outputS = new String(output.toByteArray()); |
|
587 |
logMetacat.debug("CrudService.insertDocument - Metacat returned: " + result); |
|
543 | 588 |
// if (!(outputS.indexOf("<success>") > 0 && outputS.indexOf(localId) > 0)) { |
544 | 589 |
// throw new ServiceFailure(1190, outputS); |
545 | 590 |
// } |
Also available in: Unified diff
removed CrudService dependency on servlet params. CrudService is now a singleton. I'm getting an error from metacat saying it can't find teh systemmetadata schema, even though it is, in fact, registered with metacat. need to identify why this is happening.