System metadata

change from this:
<xs:schema  targetNamespace="http://ns.dataone.org/service/types/v1"
    xmlns:d1="http://ns.dataone.org/service/types/v1"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    version="v1"
    elementFormDefault="unqualified" attributeFormDefault="unqualified">

To this:
<xs:schema  targetNamespace="http://ns.dataone.org/service/types/v1"
    xmlns:d1="http://ns.dataone.org/service/types/v1"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    version="1.0.0"
    elementFormDefault="unqualified" attributeFormDefault="unqualified">


Question for Group:
  Identifier is accepted by constructors in all the service Exceptions.  Accepting this Identifier would make all the exceptions versionable.  We originally decided not to version exceptions (seeing that they do not have a namespace associated with them anyhow). Should we revise the constructor to receive a String instead?
  

Ryan working on qt gui for mounting the drive under windows. Need to update d1_common_python to match the schema changes.

Rob - web test up, but hudson offline. (back online)

Nick - replication. Need better description of tasks.
- Add to admin for 

orc VM host = host-orc-1.dataone.org

List of additional methods for supporting access to / modification of system metadata


See http://epad.dataone.org/20110510-sprint-notes

- also an issue with the node list for updating.
  Currently, we have only one method for updating of the entire nodeList, updateNodeCapabilities. This one method covers a lot of ground which could only be supported by analyzing diffs. Seems that we should call descrete methods for the various areas of the nodelist that we need to maintain.
  
Need to generate a document to describe the inter-jvm method calls

d1_common_java Modifications
  0.6.2-SNAPSHOT is deprecated
  0.6.3-SNAPSHOT is current working POM

Original and previously deprecated Service APIs are deleted

Refactoring establishes two new packages:
1)org.dataone.service.util
  -all non-versionable helper classes
    Constants (may need to reconsider:  is this versionable?)
    D1Url
    EncodingUtilities
    TypeMarshaller     (wins over ServiceTypeUtil method)
        removing serializeServiceType 
            replaced with marshalTypeToOutputStream
        removing deserializeServiceType
            replaced with unmarshalTypeFromStream
    DateTimeMashaller  (replaces ServiceTypeUtil methods)
    
2)org.dataone.service.types.v1.util
  - all versionable helper classes
    ChecksumUtil (replaces ServiceTypeUtil methods)
    NodelistUtil (replaces NodeListParser.parseNodeListFile with NodeListUtil.mapNodeList)
    ObjectFormatServiceImpl
  
Deprecated Classes and Packages
    
DeprecatedMethods
  ==> The Class parameter 'type' is no longer needed (using TypeMarshaller under the hood)
  ==> use this new method instead:
      addFilePart(String name, Object serializableD1Object) 

Impacts
    update client code to new unmarshalling method - replaces deserialize...()
    update Metacat to include new marshalling methods

 StreamUtil deprecation:
 NodeListParser deprecation:
 ServiceTypeUtil deprecation:
 ObjectFormatServiceImpl (path changes)
 TypeMarshaller (path changes)
Constants (path changes)
D1Url (path Changes)
EncodingUtilities (path Changes)
 CN Service V1 versioning:
 MN Service V1 versioning:
DataONE Types V1 versioning:
JibX Upgrade:
All enumerations have new method for accessing the behaviour of an enum.  Originally toString method was used to return the behaviour associated with an enum constant, but now, xmlValue is used.   The reason for the change from JibX maintainers is that the Java community wished to be able to change in certain circumstances the functionality of toString for an Enum.  The upshot is that, we will  need to change code that calls the DataOneType.toString to DataONEType.xmlValue.

Impacts:
DataONE Enum Types:
ChecksumAlgorithm:
  metacat
    edu.ucsb.nceas.metacat.IdentifierManager (use of valueOf is not recommended, convert is proper call)
    edu.ucsb.nceas.metacat.MetacatHandler
    edu.ucsb.nceas.metacat.util.MetacatPopulator
    edu.ucsb.nceas.metacat.restservice.ResourceHandler
    edu.ucsb.nceas.metacat.restservice.MNResourceHandler
    edu.ucsb.nceas.metacat.dataone.MNodeService
    edu.ucsb.nceas.metacat.dataone.D1NodeServiceTest
  d1_libclient_java (rnahf) - checked that they use convert()
    org.dataone.client.D1Object
    org.dataone.client.MNode
  d1_integration (rnahf)
    org.dataone.integration.ChecksumAnalysis
    org.dataone.integration.MNodeTier1IT
    org.dataone.integration.MNodeIT
    org.dataone.integration.ExampleUtilities
    org.dataone.integration.MNodeTier2IT
Event:
  metacat
   edu.ucsb.nceas.metacat.restservice.ResourceHandler
   edu.ucsb.nceas.metacat.restservice.CNResourceHandler
   edu.ucsb.nceas.metacat.restservice.MNResourceHandler
   edu.ucsb.nceas.metacat.dataone.MNodeService
   edu.ucsb.nceas.metacat.dataone.CNodeServiceTest
   edu.ucsb.nceas.metacat.dataone.MNodeServiceTest
  d1_libclient_java (rnahf)  toString() replaced by xmlValue()
    java.org.dataone.client.CNode
    java.org.dataone.client.MNode
  d1_integration (rnahf)    toString() replaced by xmlValue()
    org.dataone.integration.MNodeTier1IT
    org.dataone.integration.MNodeIT
    org.dataone.integration.MNodeTier2IT
  d1_cn_noderegistry (rpw)
    org.dataone.cn.service.ldap.impl.CNCoreLDAPImpl
    
NodeState:
  metacat
    edu.ucsb.nceas.metacat.dataone.MNodeService
  d1_cn_noderegistry (rpw)
    org.dataone.cn.service.ldap.impl.CNCoreLDAPImpl
    org.dataone.cn.service.ldap.impl.CNRegisterLDAPImpl
    
NodeType:
  metacat
    edu.ucsb.nceas.metacat.restservice.ResourceHandler
    edu.ucsb.nceas.metacat.dataone.MNodeService
  d1_integration (rnahf) simply using NodeType.READ, etc.
    org.dataone.integration.ContextAwareTestCaseDataone
  d1_cn_rest (rpw)
    java.org.dataone.cn.ldap.LdapPopulation
  d1_cn_noderegistry (rpw)
    org.dataone.cn.service.ldap.impl.CNCoreLDAPImpl
    org.dataone.cn.service.ldap.impl.CNRegisterLDAPImpl
    org.dataone.cn.service.ldap.tests.CNRegistryLDAPImplTest
    
Permission:
  metacat:
    edu.ucsb.nceas.metacat.IdentifierManager
    edu.ucsb.nceas.metacat.util.MetacatPopulator
    edu.ucsb.nceas.metacat.restservice.CNResourceHandler
    edu.ucsb.nceas.metacat.restservice.MNResourceHandler
    edu.ucsb.nceas.metacat.dataone.MNodeService
    edu.ucsb.nceas.metacat.dataone.CNodeService
    edu.ucsb.nceas.metacat.dataone.D1NodeService
    edu.ucsb.nceas.metacat.dataone.CNodeServiceTest
    edu.ucsb.nceas.metacat.dataone.MNodeServiceTest
    edu.ucsb.nceas.metacat.dataone.D1NodeServiceTest
  d1_libclient_java (rnahf) changed toString() to xmlValue()
    org.dataone.client.CNode
    org.dataone.client.D1Object
    org.dataone.client.MNode
  d1_integration (rnahf)
    org.dataone.integration.ContextAwareTestCaseDataone
    org.dataone.integration.MNodeTier1IT
    org.dataone.integration.MNodeTier2IT
    
ReplicationStatus
  metacat:
    edu.ucsb.nceas.metacat.IdentifierManager
    edu.ucsb.nceas.metacat.dataone.CNodeService
    edu.ucsb.nceas.metacat.dataone.CNodeServiceTest
  d1_libclient_java (rnahf)
    org.dataone.client.CNode
  d1_integration (rnahf)
    org.dataone.integration.ExampleUtilities

 QueryType & IdentifierFormat are not related to any other types and are not root elements

org.dataone.service.exceptions versioning...do we need to version off them? 
2011-07-26

- change system metadata obsoletes and obsoletedBy to be single relationships.(completed -rpw)
- objectFormat should be min 1, max 1 (defaults work -rpw)
- size should be min 1, max 1 (defaults work -rpw)

Now there's a third object type (resource map) being managed by the infrastructure in addition to Science Metadata and Data. Operations that distinguish between data and metadata should probably now be updated to reflect a distinction between objects that are maintained by the CNs (Science metadata and resource maps) versus those which are maintained only by the MNs (data).

ORE map considerations
There are some potentially complex "business rules" when dealing with the ORE maps and the objects that they describe. A few scenarios outlined below.

What happens during update?:
----------------------------
Initial create
Data update (scidata.1.2)
Does scimeta.1.1 get updated so that it can "point" to the new scidata.1.2 object which would be done using an updated ORE map (ore.1.2)?

Permissions
-----------
Revision follow-through
------------------------
I update ore.1.1 (it is obsoletedBy ore.1.2).
I leave scimeta.1.1 as is
Do we follow the revision chain when looking up relations for scimeta.1.1 (it would resolve to ore.1.2)?

Why does SystemMetadata have resourceMap{0...n}?