Add the version information in a log statement.
Add a smart test when we set the file name for the header of "content-deposition":When the id doesn't end with the file extention, we set the file to be id+extension.
To set the content-deposition header, the cn will look the file name in the system metadata first.
Check if the object and sysmeta are null before to get the inputstream object.
Added the double quotes on the file name of the http header "content-deposition". This can handle the special characters on the file name.https://projects.ecoinformatics.org/ecoinfo/issues/7084
Replaced the JiBXException by MarshallingException.
Add the check objectFormat is not null before we try to get the mediaType object from the object in the getObject method.
Don't need to add "." for file name between the identifier and file extention in the getObject method.The v1 getExtension method includes '.'. But the v2 version doesn't include it.
Merge the changes from the 2.6 branch into the trunk, fixing filename construction.
refs https://github.nceas.ucsb.edu/KNB/arctic-data/issues/151
Use the ServiceFailure to replace the InvalidRequest when it is the read-only mode (CN throws the exception).
In the replicate method, the checking of the read-only mode was moved from MNodeService class to the MNResourceHandler class since it is asynchronized.
The systemmetadataChanged method is asynchronized, so we put the read-only checking on the ResourceHandler class.
use idFilter for v2 getLogRecords() to match v2 API definition.
check for auth before doing asynch call to MN dirtySysMeta implementation
use request query string first when handling MN.query() method. https://redmine.dataone.org/issues/7384
Put a the systemMetadataChanged method into a queue, so it will not hold the block.
Use the key word "packages" to replace the "package".
Decode the string of the uri after we break the uri into parts base on the "/".
merge from V2 impl: check for optional "failure" param instead of throwing exception when it is missing (often is). https://redmine.dataone.org/issues/7283
check for optional "failure" param instead of throwing exception when it is missing (often is). https://redmine.dataone.org/issues/7283
Fixed a possible null pointer exception bug. https://redmine.dataone.org/issues/7280
Use the NodeReference object to replace the replicaStatus to restrict the listObjects method.
Throw an exception if the request doesn't specify the name of the theme in the view method.
use objectFormat.extension in cases where we need to construct a filename for download. https://redmine.dataone.org/issues/3312
use v1 and v2 xsl as appropriate for rendering d1 types (object format list, mostly)
use MediaType from v2.SystemMetadata and v2.ObjectFormat to better determine mime-type, charset and filename for the get() method. https://redmine.dataone.org/issues/3309
Committed the change which Andreit did. 1. Add the code for synchronize(not implemented)2. Add the code for addForm.
defer to D1 PortalCertificateManager to pull authentication credentials from the request before defering to old Metacat cookie session
add whoami endpoint to make debugging authn/authz easier as we use additional mechanisms for proving identity.
use singleton for getting JWT token - refactor in d1_portal project
Make the REST api work for views.
Added the code to handle put method in meta url. See bug https://projects.ecoinformatics.org/ecoinfo/issues/6666
Add the code to handle the PUT method for meta url. See https://projects.ecoinformatics.org/ecoinfo/issues/6666.
Modify v1 and v2 calls to MultipartRequestResolver to use MAX_UPLOAD_SIZE from configuration.
Updated D1ResourceHandler to not hardcode a file size limit. This will allowlarge, multi-gigabyte files to be uploaded, but still needs testing. The limitis now drawn from the metacat.properties file. An alternative would be to inspectthe Content-Length header of the request and set the max to a value greater than the...
Comment out a print of an error message. It will show up for every public request.
include person's full name in the JWT returned from /token
Move the code to get the object in front of the method to get the system metadata.
add /token endpoint for annotatorJS/annotateIt.org integration. https://github.com/DataONEorg/sem-prov-design/issues/18
add support for v2 DataONE API.
remove leading '?' in the query parameter for MN.query() implementation. We want it to match CN behavior/expectations and comply with the DataONE specification for the interface. https://projects.ecoinformatics.org/ecoinfo/issues/6488
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. https://projects.ecoinformatics.org/ecoinfo/issues/6054
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.
include mn.publish() REST endpoint handling. https://projects.ecoinformatics.org/ecoinfo/issues/6024
implement the view service (uses existing skin-based dbtransform) - and include the REST endpoint. https://projects.ecoinformatics.org/ecoinfo/issues/6028
include GET /package/{pid} endpoint in MN service. https://projects.ecoinformatics.org/ecoinfo/issues/6027
do not require PortalCertificateManager be configured. Fix NPE because session was not created when using old sessionid-based authentication. https://projects.ecoinformatics.org/ecoinfo/issues/5942
handle client certificates, portal certificates and jsessionid as three ways to prove you are an uthenticated user. https://projects.ecoinformatics.org/ecoinfo/issues/5942
use ContentTypeInputStream interface (and ByteArray implementation) to specify the desired content-type of the InputStream returned by MN.query().
switch back to log4j statements now that I am sure certificate delegation is working.
use System.out.println until the oa4mp logging issue is resolved.
add logging for portal certificate look up process.
use relative path for oa4mp_client.xml (within servlet context). https://projects.ecoinformatics.org/ecoinfo/issues/5936
first pass at integrating CILogon/MyProxy certificates in Metacat. Configuration is specific to mn-demo-4.test.dataone.org for the time being (this will cause localhost deployments to fail webapp deployment). https://projects.ecoinformatics.org/ecoinfo/issues/5936
Allow use of server-side XSLT for SOLR queries that include "wt=<qformat>". https://projects.ecoinformatics.org/ecoinfo/issues/5812
use default count = 1000 for CN.listObjects rather than -1 (because now -1 will cause an SQL error)
default replicaStatus to true for the CN.listObject call
default replicaStatus (aka "show replicas in results") to true rather than false
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"
Implement MNQuery for "pathquery" engine. Optionally include guid in the pathquery results (https://redmine.dataone.org/issues/3083)
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 metacat.properties file (which is injected into the DataONE Settings values during weapp intitialization)....
improve content type handling during the get() callshttps://redmine.dataone.org/issues/3070
Print the stack trace when the MMP cannot be resolved.
use metacat.properties to specify the default checksum algorithm to use -- this way it will be easy for us to switch to whatever DataONE decrees. https://redmine.dataone.org/issues/2834
use at least one thread on single-processor machines.https://redmine.dataone.org/issues/2800
handle CN.archive() rest call: PUT /archive/{pid}https://redmine.dataone.org/issues/2678
correct log about 'archive' being called
handle 'archive' rest callshttps://redmine.dataone.org/issues/2678
use a shared ExecutorService for replicate() calls.https://redmine.dataone.org/issues/2623
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.
change ordering of getLogRecords() parameter -- pidFilter is in the middle now
use 'formatId' for listObjects() parameterhttps://redmine.dataone.org/issues/2550
upgrade to latest RC in libclient and common jars -- includes updated getLogRecords and new mn.generateIdentifier method
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 https://redmine.dataone.org/issues/2526.
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 https://redmine.dataone.org/issues/2526.
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 https://redmine.dataone.org/issues/2526.
Don't throw a JibXException, but rather convert it to a ServiceFailure.
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 https://redmine.dataone.org/issues/2526.
Add a collectMultipartParams() convenience method to D1ResourceHandler to parse multipart parameters from the entity when the entity contains no file parts.
add logging statements when there is a problem calling setReplicationStatus
Get the serialVersion param from the MMP params map rather than the request object params map in setAccess().
include CN.delete()https://redmine.dataone.org/issues/2506
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.https://redmine.dataone.org/issues/2476
check for null session (public) calls to MN.replicate() before passing it to the asynchronous implementation
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.
for good measure, use the D1 encoding util for url decoding the parameters for listObjectshttps://redmine.dataone.org/issues/2460
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.
serialize exception in header for describe response when there is a BaseExceptionhttps://redmine.dataone.org/issues/2440
do not include stylesheet for list of checksum algorithms -- there is no template for it and therefore looks blank in a browser
call deleteReplica when we get that request (looks like an undetected copy and paste error)
handle both listing and getting checksums using the GET endpoint -- depends whether or not a pid is included in the URLhttps://redmine.dataone.org/issues/2089
getMultipartParameters() outside of debug block -- thanks Mark Reyes @ CDL for catching this.
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....
use plain String parameter for {pid} instead of XML serialization of it.
remove {pid} from POST URL on CN.registerSystemMetadata()https://redmine.dataone.org/issues/2284
remove {pid} from POST URL on CN.create()https://redmine.dataone.org/issues/2284
remove {pid} from POST URL on MN.create()https://redmine.dataone.org/issues/2284