| Revision:

metacat / src / edu / ucsb / nceas / metacat / restservice @ 8427

# Date Author Comment
8160 08/22/2013 04:04 PM ben leinfelder

use consistent file names and zip content names. Opted for "-" separator so that the zip writer does not remove the unique part of the filename.

8034 07/18/2013 02:49 PM ben leinfelder

include filename in the package download, though we can;t really use the PID because of all the potential characters in it that are not valid for filesystems.

7864 07/09/2013 10:40 AM ben leinfelder

include mn.publish() REST endpoint handling.

7861 07/08/2013 06:10 PM ben leinfelder

implement the view service (uses existing skin-based dbtransform) - and include the REST endpoint.

7855 07/08/2013 12:14 PM ben leinfelder

include GET /package/{pid} endpoint in MN service.

7778 05/24/2013 10:20 AM ben leinfelder

do not require PortalCertificateManager be configured. Fix NPE because session was not created when using old sessionid-based authentication.

7773 05/23/2013 09:45 PM ben leinfelder

handle client certificates, portal certificates and jsessionid as three ways to prove you are an uthenticated user.

7757 05/23/2013 10:20 AM ben leinfelder

use ContentTypeInputStream interface (and ByteArray implementation) to specify the desired content-type of the InputStream returned by MN.query().

7752 05/22/2013 03:49 PM ben leinfelder

switch back to log4j statements now that I am sure certificate delegation is working.

7749 05/22/2013 03:02 PM ben leinfelder

use System.out.println until the oa4mp logging issue is resolved.

7745 05/22/2013 10:34 AM ben leinfelder

add logging for portal certificate look up process.

7743 05/22/2013 09:34 AM ben leinfelder

use relative path for oa4mp_client.xml (within servlet context).

7737 05/21/2013 11:05 PM ben leinfelder

first pass at integrating CILogon/MyProxy certificates in Metacat. Configuration is specific to for the time being (this will cause localhost deployments to fail webapp deployment).

7647 05/01/2013 01:53 PM ben leinfelder

Allow use of server-side XSLT for SOLR queries that include "wt=<qformat>".

7471 12/10/2012 09:07 AM ben leinfelder

use default count = 1000 for CN.listObjects rather than -1 (because now -1 will cause an SQL error)

7469 12/08/2012 06:41 PM ben leinfelder

default replicaStatus to true for the CN.listObject call

7462 12/05/2012 11:04 AM ben leinfelder

default replicaStatus (aka "show replicas in results") to true rather than false

7441 11/30/2012 10:23 AM ben leinfelder

simple autogen-based implementation of MN.generateIdentifier(). does not support DOIs, ARKs, etc. It does support including a fragment, returning an identifier like "<fragment>.2012113010215298206"

7417 11/07/2012 02:53 PM ben leinfelder

Implement MNQuery for "pathquery" engine. Optionally include guid in the pathquery results (

7412 10/26/2012 09:11 AM ben leinfelder

use ObjectFormatInfo libclient utility to look up mimeType and filename extension during get() calls. Configurable mapping file is deployed by default to /var/metacat/dataone where it can then be augmented as needed. This location is controlled in the file (which is injected into the DataONE Settings values during weapp intitialization)....

7316 07/17/2012 11:46 AM ben leinfelder

improve content type handling during the get() calls

7266 06/07/2012 12:03 PM Chris Jones

Print the stack trace when the MMP cannot be resolved.

7222 05/31/2012 09:04 PM ben leinfelder

use to specify the default checksum algorithm to use -- this way it will be easy for us to switch to whatever DataONE decrees.

7183 05/23/2012 09:33 AM ben leinfelder

use at least one thread on single-processor machines.

7155 05/01/2012 10:26 AM ben leinfelder

handle CN.archive() rest call: PUT /archive/{pid}

7154 05/01/2012 10:25 AM ben leinfelder

correct log about 'archive' being called

7153 05/01/2012 10:15 AM ben leinfelder

handle 'archive' rest calls

7143 04/24/2012 10:42 AM ben leinfelder

use a shared ExecutorService for replicate() calls.

7142 04/19/2012 02:04 PM ben leinfelder

remove extraneous pid and permission parameters from isAdminAuthorized() method and make public so that it can be called in other locations - namely before our asynchronous replicate() implementation on the MN.

7101 03/28/2012 11:08 AM ben leinfelder

change ordering of getLogRecords() parameter -- pidFilter is in the middle now

7100 03/28/2012 10:21 AM ben leinfelder

use 'formatId' for listObjects() parameter

7099 03/27/2012 04:35 PM ben leinfelder

upgrade to latest RC in libclient and common jars -- includes updated getLogRecords and new mn.generateIdentifier method

7097 03/27/2012 09:22 AM Chris Jones

Modify deleteReplica() to use parameters parsed from the mime multipart entity rather than the request params. Need to check that the unit test uses MMP params. This partially addresses

7096 03/27/2012 09:11 AM Chris Jones

Modify CN.setObsoletedBy() to use parameters parsed from the mime multipart entity rather than the request params. Need to check that the unit test uses MMP params. This partially addresses

7095 03/27/2012 08:53 AM Chris Jones

Modify reserveIdentifier() to use parameters parsed from the mime multipart entity rather than the request params. Need to check that the unit test uses MMP params. This partially addresses

7094 03/27/2012 08:29 AM Chris Jones

Don't throw a JibXException, but rather convert it to a ServiceFailure.

7093 03/27/2012 08:27 AM Chris Jones

Modify owner() to set the rights holder from parameters parsed from the mime multipart entity rather than the request params. Need to check that the unit test uses MMp params. This partially addresses

7092 03/27/2012 07:42 AM Chris Jones

Add a collectMultipartParams() convenience method to D1ResourceHandler to parse multipart parameters from the entity when the entity contains no file parts.

7091 03/26/2012 04:25 PM ben leinfelder

add logging statements when there is a problem calling setReplicationStatus

7090 03/26/2012 03:11 PM Chris Jones

Get the serialVersion param from the MMP params map rather than the request object params map in setAccess().

7077 03/19/2012 09:52 AM ben leinfelder

include CN.delete()

7065 03/13/2012 03:09 PM ben leinfelder

do not attempt to parse empty file for the failure (BaseException serialization). There are cases when this is not given (failure="") when there is not a failure.

7064 03/13/2012 03:05 PM ben leinfelder

check for null session (public) calls to MN.replicate() before passing it to the asynchronous implementation

7051 03/08/2012 04:16 PM Chris Jones

If PID is not part of the multipart params, we end up with a NullPointerException. Throw an InvalidRequest in this case rather than ServiceFailure resulting from the NPE.

7048 03/08/2012 11:18 AM ben leinfelder

for good measure, use the D1 encoding util for url decoding the parameters for listObjects

7046 03/07/2012 02:49 PM Chris Jones

Use 'fromDate' and 'toDate' as listObject param filters to comply with the API documentation. We had changed this in MNResourceHandler, but somehow missed it in CNResourceHandler.

7043 03/06/2012 02:03 PM ben leinfelder

serialize exception in header for describe response when there is a BaseException

7034 03/01/2012 02:20 PM ben leinfelder

do not include stylesheet for list of checksum algorithms -- there is no template for it and therefore looks blank in a browser

7026 02/22/2012 02:53 PM ben leinfelder

call deleteReplica when we get that request (looks like an undetected copy and paste error)

7019 02/20/2012 03:39 PM ben leinfelder

handle both listing and getting checksums using the GET endpoint -- depends whether or not a pid is included in the URL

6995 02/07/2012 09:54 PM ben leinfelder

getMultipartParameters() outside of debug block -- thanks Mark Reyes @ CDL for catching this.

6994 02/07/2012 04:53 PM ben leinfelder

dataone configuration and registration enhancements:
-include flag to disable D1 services, currently only the MN side enforces this
-do not allow multiple registration attempts if we have just submitted and are awaiting Node verification by the CN.
-do not allow configuration "bypass" if D1 settings have been configured previously....

6975 02/02/2012 02:17 PM ben leinfelder

use plain String parameter for {pid} instead of XML serialization of it.

6974 02/02/2012 11:23 AM ben leinfelder

remove {pid} from POST URL on CN.registerSystemMetadata()

6973 02/02/2012 11:15 AM ben leinfelder

remove {pid} from POST URL on CN.create()

6972 02/02/2012 11:10 AM ben leinfelder

remove {pid} from POST URL on MN.create()

6927 01/20/2012 10:14 AM Chris Jones

Ensure we have the object and sysmeta params for MN.create(). We were getting a fatal SAX parsing error encapsulated in a ServiceFailure when a science metadata object param was null. Cut it off at the pass after parsing the MMP entity.

6891 01/12/2012 01:32 PM ben leinfelder

use new endpoint/method:

6890 01/12/2012 12:18 PM ben leinfelder

use PUT /obsoletedBy/{pid} for CNCore.setObsoletedBy per our discussion today

6882 01/11/2012 11:31 AM ben leinfelder

remove method: assertRelation

6880 01/11/2012 10:41 AM ben leinfelder

serialize the Identifier for the systemMetadata being registered

6869 01/09/2012 05:08 PM Chris Jones

Update the CN methods to throw a VersionMismatch where the API changed (where serialVersion is a required parameter). These were previously throwing an InvalidRequest exception.
Change the exception handling for calls to Hazelcast to catch a RuntimeException (not Exception) so we don't catch exceptions that we purposefully throw....

6860 01/06/2012 07:40 AM Chris Jones

Correctly deserialize the BaseException subclass in handling calls to setReplicationStatus()

6803 12/16/2011 04:24 PM ben leinfelder

new jars with many changes -- including new CN methods: ping, describe, listChecksumAlgorithm. Removed MN.setAccessPolicy. Refactored CN.setOwner() to CN.setRightsHolder().

6799 12/16/2011 09:56 AM Chris Jones

Update the parameter names expected for listObjects() to reflect the MN API changes in the architecture docs.

6794 12/16/2011 07:36 AM Chris Jones

Modify CNresourceHandler.setReplicationStatus() to use the new API signature, including the failure BaseException that is parsed out of the MMP as a file section. Log the exception message. Since this is an asynchronous call, ReplicationManager won't see a failed status, but the MNAuditTask eventually will.

6793 12/16/2011 07:32 AM Chris Jones

Add collectReplicationStatus() to CNResourcHandler to return the BaseException or it's subclass, if any, provided in the the call to setReplicationStatus. The exception will be reported on the CN.

6777 12/13/2011 12:22 PM ben leinfelder

updated D1 API -- removed Permission.REPLICATE and associated parameters

6773 12/13/2011 10:58 AM ben leinfelder

include SerialVersion in describe response
NOTE: d1 jars should be replaced once all schema changes are finalized and the generate d1_common code is committed to svn

6756 12/09/2011 08:04 AM Chris Jones

Minor reformatting for readability.

6691 11/23/2011 11:37 AM ben leinfelder

match documentation for the MN.describe() header

6679 11/18/2011 05:00 PM ben leinfelder

run replicate() in a separate thread so that we don't wait for potentially large data objects to be moved around the system.

6678 11/18/2011 12:13 PM Chris Jones

Call replicate() asynchronously.

6677 11/18/2011 09:13 AM Chris Jones

Use status.toLowerCase() to deal with ReplicationStatus conversion issues. This needs to be reviewed.

6660 11/16/2011 12:58 PM ben leinfelder

get params from multipart params for systemMetadataChanged call

6650 11/14/2011 04:00 PM ben leinfelder

get pid from normal params, not the URL -- the client should include them in the params -- and not as a serialized "object" since it is just a string value

6643 11/13/2011 04:47 PM Chris Jones

The ReplicationStatus parameter is 'status', not 'replicationStatus', in the architecture documentation.

6642 11/13/2011 03:50 PM Chris Jones

Although parameters for setReplicationStatus() are expected as multipart/form-data fields, they seem to be added to the HttpServletRequest as URL parameters during the proxy forwarding in d1_cn_rest_proxy. Test for their existence as multipart fields, but fall back to request params, otherwise, throw an InvalidRequest exception.

6639 11/11/2011 09:54 AM ben leinfelder

lookup stylesheet from for CN list objects and list formats. This is used in conjunction with the CN rest service deployment where the xslt is actually kept.

6634 11/10/2011 12:07 PM Chris Jones

Since we're using a multipart form to encode parameters, extract the params out of the multipart form prior to doing a get() from the multipartparams map in setReplicationStatus(). Likewise, do the same in updateReplicationMetadata() and setReplicationPolicy().

6623 11/08/2011 04:40 PM Chris Jones

List the correct REST endpoints for replication in the documentation.

6622 11/08/2011 03:49 PM ben leinfelder

upgrade to 1.0.1-SNAPSHOT DataONE jars

6619 11/08/2011 10:36 AM Chris Jones

Keep /dirtySystemMetadata as the REST endpoint for systemMetadataChanged() for now.

6604 11/04/2011 02:21 PM Chris Jones

Fix getReplica() handling code for getReplica() and systemMetadataChanged(). Calls to getReplica() in MNode were calling get(), so the lack of resource handling was being missed.

6603 11/04/2011 02:19 PM Chris Jones

Handle multipart params where the libclient methods are using them.

6592 11/02/2011 08:00 PM Chris Jones

Handle calls to CNReplication REST services. Modify handle() to field calls to /replicaPolicies, /replicaMetadata, /replicaAuthorizations, and /replicaNotifications. Add the isNodeAuthorized(), setReplicationPolicy(), setReplicationStatus(), and updateReplicationMetadata() methods to parse and pass multipart form data and params on to the CNodeService implementing class....

6590 11/02/2011 07:46 PM Chris Jones

Add support for the various CNReplication calls. Add collectReplicationPolicy() to parse the policy out of the multipart form, and collectReplicaMetadata() to parse out the replica to be updated.

6561 10/27/2011 05:51 PM ben leinfelder

move the DataONE 1.0.0-SNAPSHOT

6548 10/27/2011 11:17 AM Chris Jones

The incoming source node param is just a string, not XML, so don't attempt to deserialize it. Rather, just make a new NodeReference object and set it's value to the value of the incoming param.

6542 10/20/2011 02:03 PM ben leinfelder

add User-Agent logging to support D1 requirements

6541 10/20/2011 12:40 PM ben leinfelder

remove old RestServlet handler -- not used now

6515 09/23/2011 10:18 PM ben leinfelder

MN.setAccess() is a PUT

6514 09/23/2011 09:54 PM ben leinfelder

correctly handle incoming "accessPolicy" parameters for the setAccess() method

6513 09/23/2011 08:46 PM ben leinfelder

swap the parameters for update: existing pid should be first, and then newPid

6510 09/23/2011 01:39 PM ben leinfelder

use "action" parameter instead of "permission"

6509 09/23/2011 01:38 PM ben leinfelder

use "action" parameter instead of "permission"

6507 09/22/2011 03:30 PM ben leinfelder

include checksum algorithm when setting describe

6502 09/22/2011 02:01 PM ben leinfelder

correctly implement MN.describe

6501 09/22/2011 01:40 PM ben leinfelder

return Node not NodeList for getCapabilities

6472 09/20/2011 02:11 PM ben leinfelder

collect "message" param from multipart request for MN.synchronizationFailed method