In CNodeService, separate the CN.create() functionality from the MN.create() functionality while still using the superclass to call create(). Deal with Hazelcast locks and setting serial versions only in the CN implementation.
Change updateSystemMetadata() to evaluate the incoming system metadata serial version against that found in the hzSystemMetadata map. If they are the same, do the update. If not, throw an InvalidRequest explaining that they need the most current version.
Modify CNodeService's registerSystemMetadata() with support for SystemMetadata's serialVersion field. Also, use the hzSystemMetadata map for all system metadata reads using a lock on the pid in order to get the very latest version. This affected isNodeAuthorized(), getChecksum(), and assertRelation(). Since we're using Hazelcast, exceptions are masked as RuntimeException, so throw a ServiceFailure with the underlying message.
Modify CNodeService's updateSystemMetadata(), setReplicationStatus(), setReplicationPolicy(), and setOwner() with support for SystemMetadata's serialVersion field. Other methods still pending an update. Use the hzSystemMetadata map for all system metadata reads using a lock on the pid in order to get the very latest version.
removing non-junit file from the test area
load hazelcast test files from the classpath rather than from rob's personal directory.
SystemMetadataManager's functionality is handled by IdentifierManager. Removing it and it's test.
MetadataTypeRegister is now replaced by ObjectFormatService. Removing it and it's test.
include clearer error message when UPDATE action is requested on a replicated document and we fail to successfully get a lock from the source Metacat serverhttp://bugzilla.ecoinformatics.org/show_bug.cgi?id=4907
move the DataONE 1.0.0-SNAPSHOT
correctly check for missing config values during geoserver configuration
call the web.xml tomcat6 not tomcat5
remove reference to tomcat5.5 in favor of tomcat6. including the "custom" start up script that used the sun jdk -- this can be configured rather than coded into the script.
remove reference to the "custom" /etc/init.d/tomcat6 script -- this should not be used since there are now better ways to customize the tomcat start up
use 2.0.0
-use 2.0.0 version-use tomcat6-use /var/lib/tomcat6 as the example tomcat home directory
use 2.0.0 -- stub out the release notes
Configure and use CertificateManager in order to act as the MN when performing replicate() and getReplica() mthods.
use logging, not system.out
change upgrade scripts/routines to use 2.0.0 version number instead of 1.10.0
make sure we close the prepared statement always
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.
include CILogon link and more explanation about what is going on with the mapping.
Change the version from 1.9.4 to 1.9.5.
correctly check that user is logged into metacat before proceeding
use null session for now
draft of legacy-to-d1 account mapping interface
add User-Agent logging to support D1 requirements
remove old RestServlet handler -- not used now
Add debugging output to MNodeService.
use default fmtid if we can't find the user-supplied data mime type in our list
including newer d1 libclient that uses Foresite (and Jena) to construct/parse ORE resource maps for DataONE
delete the xml access rules by either docid or guid to make sure we have the most up to date information
Fix a data-typing issue when pulling replicationAllowed from postgres. Use getBoolean(), not getString().
cleaned up to use for populating a DataONE MN using the D1 api. Retrieves packages from a Metacat and generates system metadata for them before calling MN.create() for both data and metadata.NOTE: you need a client certificate that the target server accepts (either DataONE-generated for testing or a CILogon one for more official use). I was only able to get the former certificate type to work with our existing MN servers
IdentifierManager.getSystemMetadata() was missing the number_replicas and replication_allowed fields when building a ReplicationPolicy section of a SystemMetadata document being returned. Add in these two attributes.
update D1 jars to include recent SubjectList -> SubjectInfo refactoring and the SUBJECT_PUBLIC constant
include SystemMetadata when replicating data and metadata documents -- this allows us to establish the guid-to-docid mapping that is crucial for being able to read the replicated document by guid (d1 api)
throw InvalidToken when the Session parameter is null for create()https://redmine.dataone.org/issues/1850
Fix service versioning in metacat.properties so that when Metacat nodes are registered they report the correct service version for use in resolve() -- i.e., use "v1" instead of "0.6.4" in resolve urls.
Once a CN calls replicate() on an MN, the MN needs to call getReplica() on the source MN (not get()). Once the bytes are retrieved, the MN must then call back to the CN with setReplicationStatus() to indicate that the replication status is complete. Modify MNodeService to do so.
Bug fix for access control rules coming in from the dataone system metadata. Previously, the code used getLocalId() to get the docid to insert into the XML access table, but that docid included the revision number (e.g., foo.1.1), which it shouldn't. Now use the AccessionNumber class to strip off the rev to get a real docid for insertion into the table.
allow the XML namespace to be given in both double and single quotes. The regex pattern was only looking for xmlns values that were in double quotes. This was brought to light by LTER:http://bugzilla.ecoinformatics.org/show_bug.cgi?id=5497
set date uploaded and date system metadata updated date to current time when calling MN.create() and MN.update()
updated d1_common jar (unknown changes)
use rfc2253 format when extracting certificate subject
do not allow system metadata to have obsoletes or obsoletedBy fields when calling the create() method -- these are only allowed for updates so that we do not subvert object versioning by [un]knowingly submitting system metadata that directs one id to another.
set the originating member node on update()
set the originating member node on create()
-use whatever object format id is stored in the DB-only set originating node and authoritative node if we have non-null values for them
set sysmeta submitter based on the subject given in the certificate
for default Metacat installation we turn off multicast and only enable localhost communication.
skip Objects that have null format ids are invalid checksums
MN.setAccess() is a PUT
correctly handle incoming "accessPolicy" parameters for the setAccess() method
swap the parameters for update: existing pid should be first, and then newPid
Modified cron schedule to fix the incorrect crontab entry.
do not require ID reservation before create() or update()
use "action" parameter instead of "permission"
catch datapackage parsing errors as before
include checksum algorithm when setting describehttps://redmine.dataone.org/issues/1799
check for null session before logging sync failedhttps://redmine.dataone.org/issues/1798
Fixed the D1 URL to the Coordinating Node that had been missing /cn in the path.
use an actual data object (bytes of "test") when generating system metadata so that the checksum is a valid checksum
use Settings augmentation to customize the D1Client.CN_URL when used in a Metacat deployment.
correctly implement MN.describehttps://redmine.dataone.org/issues/1799
return Node not NodeList for getCapabilitieshttps://redmine.dataone.org/issues/1800
Use setProperty() instead of addProperty() to properly override the Settings property.
Modify to set the CN URL before getting a CN instance.
Updating CN property to use cn-dev.
Pull the certificate path for dataone certificates from the metacat properties file.
return null instead of throwing an exception when pid is not found in store
log errors on create() and registerSM
more stringent NP checking when saving replication policy
Register as a MN on the DataONE network as part of the properties setup. This is currently done always, but it needs to be conditional rather than automatically triggered.
Added subject field to getCapabilities() call.
Newest D1 0.6.4 jars
comment out resynch() method until errors are resolved
use default hazelcast config when not configured to use an external one
Use multicast in the hazelcast config for local deployments.
comment out the external hazelcast config location for default building
include default hazelcast.xml in the war build
Add in the hzObjectPath map to the hazelcast config file for a local deployment. Enable the MapStore impl for both maps.
Don't use the hzNodes map yet (as a hazelcast client). Use D1Client instead to get the node list in isNodeAuthorized().
For now, remove the hzClient code connecting to the DataONE process cluster to get the hzNodes map. This will be moved into the storage cluster, but use D1Client to get the node list for now.
A default hazelcast config file for metacat.
going back to using IDentifier as the key for the ObjectPAthMap.
Removed extraneous comments.
Add boolean field for synchronization status.
New default properties for dataone MN properties.
A configuration section for DataONE Member Node properties.
Fix getCapabilities to properly throw ServiceFailure when properties can not be read, rather than failing with a log message. Fix properties in the Node object to reflect their correct values. Set the sync schedule properly to default to 5 minute intervals. Improve documentation.
Reformatted to correct indentation to make class readable.
newer d1 jars -- contains CN.isNodeAuthorized() method
explicitly require java 1.6
collect "message" param from multipart request for MN.synchronizationFailed method
Reverting previous @Overrides chanrge from r6470, as that is the desiredbehavior under Java 1.6 -- previous versions of Java (e.g., 1.5) will notcomile with this usage of the @Overrides annotation, but the currentlysupported version will. So reverting to the 1.6 convention.
Removing incorrect @Override annotations that were preventing compilation. The methods marked did not actually override a method in the superclass, so they were not compiling. I think @Overrides was being mistaken for methods that implement an interface but aren't actually in the superclass.