Call the method lock.lock() immediately after getting the lock. Otherwise, if an exception happened between the two calls (in another word, lock.lock() was called), lock.unlock() can cause an issue:Current thread is not owner of lock!See https://redmine.dataone.org/issues/6836.
Add a cap to only write 512 characters of the user-agent to db.
Modify v1 and v2 calls to MultipartRequestResolver to use MAX_UPLOAD_SIZE from configuration.
The constrcutor of EventLogData missed the user-agent field. So the user-agent wasn't recorded. The bug was fixed.
organize imports. move exception-throwing method call into try block.
use HttpMultipartRestClient since the DefaultHttpMultipartRestClient was removed from d1_libclient_java
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...
The setReplicationStatus method only supports sid and the setRightsHolder method supports both PID and SID.
Add the code transform a sid to a pid in publish, getPackage and view method. Fefer dataONE #6734.
Fixed a bug that it should use getReplica rather than get method.
The CN.setReplicationPolicy method now only support PIDs. Refer to https://redmine.dataone.org/issues/6734.
Went through the v2 ObjectFormatList and convert every v2 ObjectFormat to v1 ObjectFormat and put them into a v1 objectFormatList.
Add the log messages to indicate the hazelcast synchronization starting and ending.
Add the code to handle sid in the publish method.
Add the code to exclude the sid in the view and getPackage.
Add a converter to convert the V2 Log object to the V1 Log object.
Add the rules to check the if a sid is valid in the updateSystemMetadata method.
Implemented the feature to support the identifier(both sid and pid) feature in the objectLists method.
The MN.listobjects and CN.listobjects methods will call the one in the D1NodeService class.
Add the code to check if the pid is an SID in the registerSystemMetadata method.
Add code to check if the sid equals pid for the method checkSidInRegisterSystemMetadata.
Moved the rules for the SID from D1NodeService.create to MNodeService.create.Also moved the code to check the validation of an pid from D1NodeService.create to MNodeService.create, MNodeService.replicate and CNodeService.create.
Add the code to check if a sid is legitimate in the method create and registerSystemMetadata.
The the code to handle sids on the v2 api - setReplicationPolicy, setReplicationStatus, setAccessPolicy and setObsoletedBy.
Add the code to handle if a identifier is a sid in setAccessPolicy, setReplicationPolicy, setObsoletedBy and setRreplicationStatus.
Comment out a print of an error message. It will show up for every public request.
Add the code to handle SID in the getLogRecords method.
In the getLogRecords method, the pidFilter is checked if it exists.
Fixed a bug that the getLogRecords can't handle the case that the event is null.
Add the code to check the if the new series id is legitimate in the systemMetadataChanged method.
Add the code to support the sereis id on isAuthorized and systemMetadataChanged method.
Add the code to handle the sid in the delete and archive method.
Fixed a bug in comparing two identifiers in the update method.
Add a check that the sid shouldn't equals the pid in the update and create method.
Add the code the check if the format of the sid is valid in the system metadata.
Add the enforcement for the sid in the create method.
Enforce the sid requirement in the update method.
Check if the identifier is a sid for the v1 update.
Add the code to handle the deleted identifier in the checking v1 system metadata existing method.
Enforce the mn.getChecksum only to handle an PID.
Add the series id to the system metadata.
Implement the series id in the getSystemMetadata method.
Looking for sid for the method describe.
Refactor the code to check a pid exists in the v1 api.
Modified the get method to handle the sid in the v2 api.
Change a method name to use pid rather than guid.
Add the code to get the most recent version of a sid which all pids are obsoleted.
Fixed a bug that the method getLocalId swallowed an exception incorrectly in the IdentifierManager.
Fixed a bug that some service failure exceptions were handled as the NotFound exception.
1. In the identifierExists method, the code to check if the identifier exist on the serial-id fields of the system metadata table.2. Fixed a bug on the identifierExists - it considered an identifier didn't exist when the determining process threw an exception.
Add a method to check if a serial id exists.
Add a method to get the pid of the head version of a sid.
add Annotator Store implementation -- pass through to D1 API for the AnnotatorJS API
include person's full name in the JWT returned from /token
Fixed a bug that the reindex of data objects may index an archived data object.
Fixed a bug that the solr index of data files doesn't reflect the change of access control.
[merge from 2.4 branch] use solr schema upgrader for 2.4.2 release -- need to replace the solr schema to include geohash fields
remove AnnotatorService completely - was moved to cn-index-processor
let metacat-index lookup annotations for indexing rather than the metacat "reindex" action.
Add delete log for data objects on CNs.
only index non-empty comment text
index both tags and text from annotateit.org
query by consumerKey until the pid search facets are fully supported on annotateit.org
During the replication, the remote content will be saved without alteration.
allow per-document reindexing to be initiated by any user (to support third-party annotations)
Write the input stream into the file system without alteration in dataone create and update methods.
look up annotations when reindexing a given pid. still very much a prototype in that we are looking up annotations from an external annotator-store. TODO: add pid filtering to query when annotateit.org supports it (pending upgrade on their site).
use http://tools.ietf.org/rfc/rfc3023 spec for conformsTo property. use the full xpath for EML dataTable and attribute selectors
Added the code to inform users the pid was deleted in the NotFound exception.
Added the code to check if a not-found object was deleted in the isAuthorized method.
Move the code to get the object in front of the method to get the system metadata.
Add a utility method for determine if there is a delete event for a given id.
Removed the method which had the byte array attribute.
Remove the system metadata for data objects.
change the way to delete the solr index of a resource map.
add /token endpoint for annotatorJS/annotateIt.org integration. https://github.com/DataONEorg/sem-prov-design/issues/18
Persitence the system metadata object in the memory before deleting it from hazelcast.
Add the code to handle the delete of the resource map.
Make the delete method work.
Make the deleteSystemmetadata method really roll-backable.
Add the code to delete systemmetadata.
Add a code to check if the pathquery engine is enabled in the checkIndexPaths method.
convert v2 SM to v1 SM for the v1 service call response
update to use v2 types for indexing
remove CN.systemMetadataChanged in favor of the CN.updateSystemMetadata method. Otherwise there's no good way to know where to fetch the auth copy from since the SM change might be to switch the authMN!
add support for v2 DataONE API.
remove dependency on HttpMessage that was in the utilities project but is now removed in favor of newer (standard) http client library code.
Include PDF version of the metadata in the package download. https://projects.ecoinformatics.org/ecoinfo/issues/6053
take advantage of the ezidclient for multi-threaded/asynchronous DOI registration. This will be most useful for doing large batch updates and not so much for the one-at-a-time publish actions but works in either context. https://projects.ecoinformatics.org/ecoinfo/issues/6440
use a member instance of ezid service that only logs in every 24 hours (or other time TBD) instead of every time there is an interaction with the service. Saves us many calls when doing batch updates to ezid but keeps us from trying to use expired sessions. Motivated by https://projects.ecoinformatics.org/ecoinfo/issues/6440
prevent js scriptlets from running when we return error messages to the client by escaping any potentially harmful xml blocks. https://projects.ecoinformatics.org/ecoinfo/issues/6224
allow updates to all doi: prefixes - realized we are already restricting to specific replica servers when updating these. worst case is we try to update a registration for which we are not the owner. https://projects.ecoinformatics.org/ecoinfo/issues/6440
show the SM and ORE generation buttons even if they have not registered/configured dataone. many potential MNs want to see their generated SM before registering (and we want them to too!).
restrict DOI updates to DOIs that match our server shoulder -- may consider opening this up to any "doi:" prefix if this is too restrictive. https://projects.ecoinformatics.org/ecoinfo/issues/6440
use separate surName and givenNames to lookup ORCIDs.
all full-text queries for ORCID, but it isn't that great because we might have a"PISCO" creator that shows us in may different orcid profiles...false matches.
use HttpClient to query orcid so I can easily set headers and such -- getting 503s from their production server when I test on dev.nceas...odd
adjust tests for production service -- more "real" information shows additional return values from the query.