Project

General

Profile

« Previous | Next » 

Revision 5337

Added by berkley almost 14 years ago

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.

View differences:

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