Fixed typos in the vairable name.
In the synchronizationFailed method, use syncExcpetion.getIdentifier method to try before the obsoleted method getPid.
In the expandRightHolder method, we don't use the parameter count=-1 to query the cn. Now we use count=200 and will use the page query to query again if it is necessary.
Add more debug statement on cn.create method.
extract EML creator[s] and use those names or organizations when registering DOI with EZID. https://github.nceas.ucsb.edu/KNB/arctic-data/issues/143
In the archive method, add a new mechanism to check if the local id is in the xml_revision table if it is not in the xml_documents table.
Give the users having change-permission to archive an object which is from a v1 node.
Trigger MDQ when inserting or updating metadata documents. https://projects.ecoinformatics.org/ecoinfo/issues/7171 and https://github.com/NCEAS/mdqengine/issues/73
Change the param from the class field to a local variable.
Change the condition that remove identifier from the identifier table in the method removeSystemMetaAndIdentifier.
Add the pid in a debug statement.
Add the code to check if the object does exist in the create method. If it doesn't, the system metadata and identifier will be removed.
Change the calling code when the method insertOrUpdateDocument signature is changed.
Add some performace debug information.
Add methods to check if there are circular obsoletes/obsoletedBy chains in the mn.updateSystemmetadata method.
Don't share the same executor in the two classes.
Call the cn.synchronize method asynchronously in the mn.updateSystemmetadata method.
Fix issue in getDefaultReplicationPolicy.
Previously, under some circumstances, a ReplicationPolicy was created but was missing the optional replicationAllowed and numReplicas attributes. These are critical to the policy, so ensure they are set to sensible defaults even when property parsing errors and other issues might skip them. Added a test of this method, but I note that other methods in SystemMetadataFactory do not have unit tests and should be added if they are modified.
Use the "MNRead" to replace "MNStorage" to determine the version of the MN.
Change an exception to more appropriate exception.
Add more debug statement for deleting.
Add some information about pid on the log statement.
Clear the code for the method handleInsertOrUpdate.
Add the code to expand the rights holder if it is a group.
Replaced the JiBXException by MarshallingException.
Use the method getContextURL rather than getSecureContextURL in the getCapacities method.So if the server doesn't support sll, the getCapacities will return a baseURL with http.
correct two minor differences from 2.6 merge: formatId parameter for MetacatHandler and using AuthUtils for gathering group membership information.
Merge in changes from the 2.6.0 release.
merge from 2.6 branch: use AuthUtils to gather user group subjects
Merge changes from the 2.6.0 branch in MNodeService.allowUpdating() so it honors the localhost MN certificate.
refs https://projects.ecoinformatics.org/ecoinfo/issues/7018
merge from 2.6 branch: use AuthUtils to get group and equivalent identities rather than manually try to extract groups from subject info (can include incorrect groups for given primary subject). https://github.nceas.ucsb.edu/KNB/arctic-data/issues/163
merge from 2.6 branch: use group subject (not name) when translating Session.subjectInfo into group list for Metacat's DocumentImpl. https://github.nceas.ucsb.edu/KNB/arctic-data/issues/163
Reformat the create and update method.
Close the input stream on the create/update method when the code aborts.
Close the the input stream from the method parameter in the create method.
If a format id in the system metadata is registered in the xml_catalog table, we will use the schema location for the format id to validate the xml instance;otherwise, we will use our previous way.
Close the input stream object on the MN.replicate method.
use SM.fileName if we have it. https://projects.ecoinformatics.org/ecoinfo/issues/6970
ensure there is a file extension included for the data files in a package download. https://projects.ecoinformatics.org/ecoinfo/issues/6970
Add code to print the the stack trace on the getPackage method in order to help us to identity some tmp file issues.
In the isScienceMetacata method, the ServiceFailure exception shouldn't be caught anymore, since the code doesn't throw it.
Put a detal code on the InvalidRequest exception in the getPackage method.
If the pid it is a package id in the getPackage method, the method will throw an InvalidRequest exception.
add warning when exception encountered loading SM into map.
set authoritative MN to origin MN if the client did not set it on mn.create. https://projects.ecoinformatics.org/ecoinfo/issues/6938
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.
Add the code to check if the mn is on the read-only mode.
include check for d1 rightsholder when checking permissions in original metacat code base. https://redmine.dataone.org/issues/7560
Fixed a bug that the publish method should throw an io exception.
Move the editScienceMetadata method to the MNodeService class - only update packageId in EML on publish()
Fixed a bug in the condition check for the archive field in the updateSystemMetadata method.
The archived field can't be reset to false if it is true in the systemMetadataChanged method.
Doesn't allow to reset the archived field to be false if the field is true in the updateSystemMetadata method.
In the systemMetadataChanged method, we will update system metadata when the local serial version is less than or equals the comming one.
refs #7453: modified the metacatLog message from mn.synchronizationFailed to include the syncFailed.message field. Also increased the log level to WARN.
Remove the method editScienceMetadata from the update method. This method will add a packageId attribute into the eml document. Lauren will add the method to the publish method.
In the systemMetadataChanged method, the object will be archived if the new archive value is true and old value is false.The log event is recorded in the systemMetadataChanged method as well.
Make the isAuthoritativeNode throw exception if some value is null.
In the updateSystemMetadata method, we avoid to log the event twice for archive=true.
In the setReplicationStatus method, it only notified the replicas when the status is completed. Now we added the status - failed and invalid.
refs #7419: refactored CNodeService implementations to not throw IdentifierNotUnique for hasReservation.
In the create method, the modification date is reset only on the objects whose authoritative member node is v1.
In the deleteReplicationMetadata method, the modification date of the system metadata will not be reset.
Modify the text of an exception.
Add contrains for the v1/v2.registerSystemMetadata method. See https://redmine.dataone.org/issues/7380
For the v1/v2 setObsoletedBy and setRightsHolder method, they only apply the objects whose authoriative member node is v1.
Add the constrains that v1/v2.archive only applies the object whose authoritative node is a v1 node.
Add the case the mn.updateSystemMetadata and cn.updateSystemMetadata will call the archive method internally.
Refactory the mn.archive and cn.archive method so the mn.update and cn.update can reuse them.
Update the packageId attribute in EML documents on update. Never display the local docid in the rendered EML.
In the archive method, add the lock.
Only applies the setAccessPolicy method to objects whose authoritative mn is v1.
Add a comment to specify that the setReplicationPolicy only applys to v1.
The setReplicationPolicy method only apply to the pids whose authoritative member node has v2 MNStorage.
Add a flag on the systemMetadataChanged method. If it is true, the authoritative member node will only accepts the serial version and replica list; the replica node accepts everything. If it is false, it will accept everything.
Add a note for the updateSystemMetadata method.
CN.updateSystemMetadata will ignore the serial version and replica list in the comming system metadata from the mn.
Add the code to check the date of system metadata modification match in MN.updateSystemMetadata only. CN.updateSystemMetadata doesn't check.
Commented out the code to check serial version on the updateSystemMetadata method.
Add more debug messages for the isCNAdmin method.
Change updateReplicationMetadata() and setReplicationStatus() to no longer set the dateSysmetaModified date per our discussion on 9/16/15.
Add more debug statement for the updateSystemMetadata method.
Add the code to check if we can't get the current system metadata from the node in the mn.systemMetadataChanged method.If we can't find it, an InvalidRequest will be thrown.
Fixed a bug that a client can set the original member node to be null.
Change some exceptions from the InvalidSystem to the InvalidRequest in the updateSystemMetadata method.
use the TypeFactory to convert the Log and ObjectFormatList objects from the v2 to v1.
In the setReplicaStatus method, if the coming status is the same one of the existing one, the system metadata will not be updated.
Fixed some incorrect exceptions in the getReplica method.
In the isAdminAuthorized method, the faiure of the isNodeAdmin method will not interrupt the next check - if it is a cn.
Use the application/bagit-097 to replace application/bagit.
Use the TypeFactory to replace the TypeMarshaller according to the change in the d1_common_java.
Use the D1NodeVersionChecker to determine the mn's version rather than using ping.
When the cn.notifyReplicaNodes method, if the target MN source code is a v2 mn, we will use v2 api; if it is a v1 node, we will use v1 api.
A new class is used to get the version of service for a given node.
Only support the application/bagit format in the getPackage method.
Use the status of mn.ping to guess the version of the source node in the replicate method.
In the replicate method, it will use the v1.getReplica method if the source node only supports v1 replication service.
The code was added to compare the serial version in the updateSystemMetadata method. If the serial version in the new system metadata is less than or equals previous version, an exception will be thrown.