edu.ucsb.nceas.metacat.restservice.v2

## Class MNResourceHandler

- java.lang.Object
- - edu.ucsb.nceas.metacat.restservice.D1ResourceHandler
  - - edu.ucsb.nceas.metacat.restservice.v2.MNResourceHandler

-     public class MNResourceHandler
      extends D1ResourceHandler

  MN REST service implementation handler ****************** MNCore -- DONE ping() - GET /d1/mn/monitor/ping log() - GET /d1/mn/log **getObjectStatistics() - GET /d1/mn/monitor/object getOperationsStatistics - GET /d1/mn/monitor/event **getStatus - GET /d1/mn/monitor/status getCapabilities() - GET /d1/mn/ and /d1/mn/node MNRead -- DONE get() - GET /d1/mn/object/PID getSystemMetadata() - GET /d1/mn/meta/PID describe() - HEAD /d1/mn/object/PID getChecksum() - GET /d1/mn/checksum/PID listObjects() - GET /d1/mn/object synchronizationFailed() - POST /d1/mn/error MNAuthorization -- DONE isAuthorized() - GET /d1/mn/isAuthorized/PID setAccessPolicy() - PUT /d1/mn/accessRules/PID MNStorage - DONE create() - POST /d1/mn/object/PID update() - PUT /d1/mn/object/PID delete() - DELETE /d1/mn/object/PID archive() - PUT /d1/mn/archive/PID updateSystemMetadata() - PUT /d1/mn/meta systemMetadataChanged() - POST /dirtySystemMetadata/PID MNReplication replicate() - POST /d1/mn/replicate getReplica() - GET /d1/mn/replica ******************
  Author:
    leinfelder

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected static java.lang.String` | `RESOURCE_ERROR`
    `protected static java.lang.String` | `RESOURCE_GENERATE_ID`
    `protected static java.lang.String` | `RESOURCE_META_CHANGED`
    `protected static java.lang.String` | `RESOURCE_MONITOR`
    `protected static java.lang.String` | `RESOURCE_NODE`
    `protected static java.lang.String` | `RESOURCE_PACKAGE`
    `protected static java.lang.String` | `RESOURCE_PUBLISH`
    `protected static java.lang.String` | `RESOURCE_PUBLISH_IDENTIFIER`
    `protected static java.lang.String` | `RESOURCE_REPLICAS`
    `protected static java.lang.String` | `RESOURCE_REPLICATE`
    `protected static java.lang.String` | `RESOURCE_TOKEN`
    `protected static java.lang.String` | `RESOURCE_WHOAMI`

    - ### Fields inherited from class edu.ucsb.nceas.metacat.restservice.D1ResourceHandler

      `auth, authCacheSzie, DELETE, enableAppendLdapGroups, enableSessionFromHeader, FUNCTION_NAME_INSERT, FUNCTION_NAME_UPDATE, GET, HEAD, logMetacat, MAX_UPLOAD_SIZE, multipartparams, params, POST, proxyKey, PUT, request, RESOURCE_ACCESS_RULES, RESOURCE_BASE_URL, RESOURCE_IS_AUTHORIZED, RESOURCE_LOG, RESOURCE_META, RESOURCE_OBJECTS, RESOURCE_QUERY, RESOURCE_VIEWS, response, servletContext, session`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `MNResourceHandler(javax.servlet.ServletContext servletContext, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)` Initializes new instance by setting servlet context,request and response

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected org.dataone.service.exceptions.SynchronizationFailed` | `collectSynchronizationFailed()`
    `protected void` | `getObject(java.lang.String pid)` Implements REST version of DataONE CRUD API --> get
    `protected void` | `getPackage(java.lang.String format, java.lang.String pid)` Retrieve data package as Bagit zip
    `protected void` | `getSystemMetadataObject(java.lang.String pid)` Retrieve System Metadata
    `void` | `handle(byte httpVerb)` This function is called from REST API servlet and handles each request to the servlet
    `protected boolean` | `isD1Enabled()` subclasses should provide a more useful implementation
    `protected void` | `publish(java.lang.String pid)`
    `protected void` | `publishIdentifier(java.lang.String identifier)` Make the status of the identifier public
    `protected void` | `putObject(java.lang.String trailingPid, java.lang.String action)` Inserts or updates the object
    `protected void` | `updateSystemMetadata()` Update the system metadata for a specified identifier

    - ### Methods inherited from class edu.ucsb.nceas.metacat.restservice.D1ResourceHandler

      `collectMultipartFiles, collectMultipartParams, collectObjectFiles, decode, findBoundaryString, getSessionFromHeader, getTempDirectory, initMultipartParams, initParams, parseTrailing, printError, serializeException`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### RESOURCE_MONITOR

          protected static final java.lang.String RESOURCE_MONITOR

      See Also:
        Constant Field Values

    - #### RESOURCE_REPLICATE

          protected static final java.lang.String RESOURCE_REPLICATE

      See Also:
        Constant Field Values

    - #### RESOURCE_REPLICAS

          protected static final java.lang.String RESOURCE_REPLICAS

      See Also:
        Constant Field Values

    - #### RESOURCE_NODE

          protected static final java.lang.String RESOURCE_NODE

      See Also:
        Constant Field Values

    - #### RESOURCE_ERROR

          protected static final java.lang.String RESOURCE_ERROR

      See Also:
        Constant Field Values

    - #### RESOURCE_META_CHANGED

          protected static final java.lang.String RESOURCE_META_CHANGED

      See Also:
        Constant Field Values

    - #### RESOURCE_GENERATE_ID

          protected static final java.lang.String RESOURCE_GENERATE_ID

      See Also:
        Constant Field Values

    - #### RESOURCE_PUBLISH

          protected static final java.lang.String RESOURCE_PUBLISH

      See Also:
        Constant Field Values

    - #### RESOURCE_PACKAGE

          protected static final java.lang.String RESOURCE_PACKAGE

      See Also:
        Constant Field Values

    - #### RESOURCE_TOKEN

          protected static final java.lang.String RESOURCE_TOKEN

      See Also:
        Constant Field Values

    - #### RESOURCE_WHOAMI

          protected static final java.lang.String RESOURCE_WHOAMI

      See Also:
        Constant Field Values

    - #### RESOURCE_PUBLISH_IDENTIFIER

          protected static final java.lang.String RESOURCE_PUBLISH_IDENTIFIER

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### MNResourceHandler

          public MNResourceHandler(javax.servlet.ServletContext servletContext,
                                   javax.servlet.http.HttpServletRequest request,
                                   javax.servlet.http.HttpServletResponse response)

      Initializes new instance by setting servlet context,request and response

  - ### Method Detail

    - #### isD1Enabled

          protected boolean isD1Enabled()

      Description copied from class: `D1ResourceHandler`
      subclasses should provide a more useful implementation
      Overrides:
        `isD1Enabled` in class `D1ResourceHandler`
      Returns:

    - #### handle

          public void handle(byte httpVerb)

      This function is called from REST API servlet and handles each request to the servlet
      Overrides:
        `handle` in class `D1ResourceHandler`
      Parameters:
        `httpVerb` - (GET, POST, PUT or DELETE)

    - #### getObject

          protected void getObject(java.lang.String pid)
                            throws org.dataone.service.exceptions.InvalidToken,
                                   org.dataone.service.exceptions.ServiceFailure,
                                   org.dataone.service.exceptions.NotAuthorized,
                                   org.dataone.service.exceptions.NotFound,
                                   org.dataone.service.exceptions.InvalidRequest,
                                   org.dataone.service.exceptions.NotImplemented,
                                   java.io.IOException,
                                   org.dataone.exceptions.MarshallingException

      Implements REST version of DataONE CRUD API --> get
      Parameters:
        `pid` - ID of data object to be read
      Throws:
        `org.dataone.service.exceptions.NotImplemented`
        `org.dataone.service.exceptions.InvalidRequest`
        `org.dataone.service.exceptions.NotFound`
        `org.dataone.service.exceptions.NotAuthorized`
        `org.dataone.service.exceptions.ServiceFailure`
        `org.dataone.service.exceptions.InvalidToken`
        `java.io.IOException`
        `org.dataone.exceptions.MarshallingException`

    - #### getPackage

          protected void getPackage(java.lang.String format,
                                    java.lang.String pid)
                             throws org.dataone.service.exceptions.InvalidToken,
                                    org.dataone.service.exceptions.ServiceFailure,
                                    org.dataone.service.exceptions.NotAuthorized,
                                    org.dataone.service.exceptions.NotFound,
                                    org.dataone.service.exceptions.NotImplemented,
                                    java.io.IOException,
                                    org.dataone.service.exceptions.InvalidRequest

      Retrieve data package as Bagit zip
      Parameters:
        `pid` -
      Throws:
        `org.dataone.service.exceptions.NotImplemented`
        `org.dataone.service.exceptions.NotFound`
        `org.dataone.service.exceptions.NotAuthorized`
        `org.dataone.service.exceptions.ServiceFailure`
        `org.dataone.service.exceptions.InvalidToken`
        `java.io.IOException`
        `org.dataone.service.exceptions.InvalidRequest`

    - #### publish

          protected void publish(java.lang.String pid)
                          throws org.dataone.service.exceptions.InvalidToken,
                                 org.dataone.service.exceptions.ServiceFailure,
                                 org.dataone.service.exceptions.NotAuthorized,
                                 org.dataone.service.exceptions.NotFound,
                                 org.dataone.service.exceptions.NotImplemented,
                                 java.io.IOException,
                                 org.dataone.exceptions.MarshallingException,
                                 org.dataone.service.exceptions.InvalidRequest,
                                 org.dataone.service.exceptions.IdentifierNotUnique,
                                 org.dataone.service.exceptions.UnsupportedType,
                                 org.dataone.service.exceptions.InsufficientResources,
                                 org.dataone.service.exceptions.InvalidSystemMetadata

      Throws:
        `org.dataone.service.exceptions.InvalidToken`
        `org.dataone.service.exceptions.ServiceFailure`
        `org.dataone.service.exceptions.NotAuthorized`
        `org.dataone.service.exceptions.NotFound`
        `org.dataone.service.exceptions.NotImplemented`
        `java.io.IOException`
        `org.dataone.exceptions.MarshallingException`
        `org.dataone.service.exceptions.InvalidRequest`
        `org.dataone.service.exceptions.IdentifierNotUnique`
        `org.dataone.service.exceptions.UnsupportedType`
        `org.dataone.service.exceptions.InsufficientResources`
        `org.dataone.service.exceptions.InvalidSystemMetadata`

    - #### publishIdentifier

          protected void publishIdentifier(java.lang.String identifier)
                                    throws org.dataone.service.exceptions.InvalidToken,
                                           org.dataone.service.exceptions.ServiceFailure,
                                           org.dataone.service.exceptions.NotAuthorized,
                                           org.dataone.service.exceptions.NotImplemented,
                                           org.dataone.service.exceptions.InvalidRequest,
                                           org.dataone.service.exceptions.NotFound,
                                           org.dataone.service.exceptions.IdentifierNotUnique,
                                           org.dataone.service.exceptions.UnsupportedType,
                                           org.dataone.service.exceptions.InsufficientResources,
                                           org.dataone.service.exceptions.InvalidSystemMetadata,
                                           DOIException,
                                           java.io.IOException,
                                           org.dataone.exceptions.MarshallingException

      Make the status of the identifier public
      Parameters:
        `identifier` -
      Throws:
        `org.dataone.service.exceptions.InvalidToken`
        `org.dataone.service.exceptions.ServiceFailure`
        `org.dataone.service.exceptions.NotAuthorized`
        `org.dataone.service.exceptions.NotImplemented`
        `org.dataone.service.exceptions.InvalidRequest`
        `org.dataone.service.exceptions.NotFound`
        `org.dataone.service.exceptions.IdentifierNotUnique`
        `org.dataone.service.exceptions.UnsupportedType`
        `org.dataone.service.exceptions.InsufficientResources`
        `org.dataone.service.exceptions.InvalidSystemMetadata`
        `DOIException`
        `java.io.IOException`
        `org.dataone.exceptions.MarshallingException`

    - #### getSystemMetadataObject

          protected void getSystemMetadataObject(java.lang.String pid)
                                          throws org.dataone.service.exceptions.InvalidToken,
                                                 org.dataone.service.exceptions.ServiceFailure,
                                                 org.dataone.service.exceptions.NotAuthorized,
                                                 org.dataone.service.exceptions.NotFound,
                                                 org.dataone.service.exceptions.InvalidRequest,
                                                 org.dataone.service.exceptions.NotImplemented,
                                                 java.io.IOException,
                                                 org.dataone.exceptions.MarshallingException

      Retrieve System Metadata
      Parameters:
        `pid` -
      Throws:
        `org.dataone.service.exceptions.InvalidToken`
        `org.dataone.service.exceptions.ServiceFailure`
        `org.dataone.service.exceptions.NotAuthorized`
        `org.dataone.service.exceptions.NotFound`
        `org.dataone.service.exceptions.InvalidRequest`
        `org.dataone.service.exceptions.NotImplemented`
        `java.io.IOException`
        `org.dataone.exceptions.MarshallingException`

    - #### putObject

          protected void putObject(java.lang.String trailingPid,
                                   java.lang.String action)
                            throws org.dataone.service.exceptions.ServiceFailure,
                                   org.dataone.service.exceptions.InvalidRequest,
                                   org.dataone.exceptions.MarshallingException,
                                   org.dataone.service.exceptions.InvalidToken,
                                   org.dataone.service.exceptions.NotAuthorized,
                                   org.dataone.service.exceptions.IdentifierNotUnique,
                                   org.dataone.service.exceptions.UnsupportedType,
                                   org.dataone.service.exceptions.InsufficientResources,
                                   org.dataone.service.exceptions.InvalidSystemMetadata,
                                   org.dataone.service.exceptions.NotImplemented,
                                   org.dataone.service.exceptions.NotFound,
                                   java.io.IOException,
                                   java.lang.InstantiationException,
                                   java.lang.IllegalAccessException,
                                   java.security.NoSuchAlgorithmException,
                                   org.apache.commons.fileupload.FileUploadException

      Inserts or updates the object
      Parameters:
        `pid` - - ID of data object to be inserted or updated. If action is update, the pid is the existing pid. If insert, the pid is the new one
      Throws:
        `org.dataone.service.exceptions.InvalidRequest`
        `org.dataone.service.exceptions.ServiceFailure`
        `org.dataone.exceptions.MarshallingException`
        `org.dataone.service.exceptions.NotImplemented`
        `org.dataone.service.exceptions.InvalidSystemMetadata`
        `org.dataone.service.exceptions.InsufficientResources`
        `org.dataone.service.exceptions.UnsupportedType`
        `org.dataone.service.exceptions.IdentifierNotUnique`
        `org.dataone.service.exceptions.NotAuthorized`
        `org.dataone.service.exceptions.InvalidToken`
        `org.dataone.service.exceptions.NotFound`
        `java.io.IOException`
        `java.lang.IllegalAccessException`
        `java.lang.InstantiationException`
        `org.apache.commons.fileupload.FileUploadException`
        `java.security.NoSuchAlgorithmException`

    - #### collectSynchronizationFailed

          protected org.dataone.service.exceptions.SynchronizationFailed collectSynchronizationFailed()
                                                                                               throws java.io.IOException,
                                                                                                      org.dataone.service.exceptions.ServiceFailure,
                                                                                                      org.dataone.service.exceptions.InvalidRequest,
                                                                                                      org.dataone.exceptions.MarshallingException,
                                                                                                      java.lang.InstantiationException,
                                                                                                      java.lang.IllegalAccessException,
                                                                                                      javax.xml.parsers.ParserConfigurationException,
                                                                                                      org.xml.sax.SAXException

      Throws:
        `java.io.IOException`
        `org.dataone.service.exceptions.ServiceFailure`
        `org.dataone.service.exceptions.InvalidRequest`
        `org.dataone.exceptions.MarshallingException`
        `java.lang.InstantiationException`
        `java.lang.IllegalAccessException`
        `javax.xml.parsers.ParserConfigurationException`
        `org.xml.sax.SAXException`

    - #### updateSystemMetadata

          protected void updateSystemMetadata()
                                       throws org.dataone.service.exceptions.ServiceFailure,
                                              org.dataone.service.exceptions.InvalidRequest,
                                              java.lang.InstantiationException,
                                              java.lang.IllegalAccessException,
                                              java.io.IOException,
                                              org.dataone.exceptions.MarshallingException,
                                              org.dataone.service.exceptions.NotImplemented,
                                              org.dataone.service.exceptions.NotAuthorized,
                                              org.dataone.service.exceptions.InvalidSystemMetadata,
                                              org.dataone.service.exceptions.InvalidToken

      Update the system metadata for a specified identifier
      Throws:
        `org.dataone.service.exceptions.ServiceFailure`
        `org.dataone.service.exceptions.InvalidRequest`
        `java.lang.InstantiationException`
        `java.lang.IllegalAccessException`
        `java.io.IOException`
        `org.dataone.exceptions.MarshallingException`
        `org.dataone.service.exceptions.NotImplemented`
        `org.dataone.service.exceptions.NotAuthorized`
        `org.dataone.service.exceptions.InvalidSystemMetadata`
        `org.dataone.service.exceptions.InvalidToken`

Copyright © 2023 Regents of the University of California. All Rights Reserved.