Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [higgins-dev] upcoming (breaking and non breaking) IdASchanges

Looking at the OWL, I think we can remove IHasMetadata from IContext, IContextFactory, and IRelationship.
 
There's still a problem however:  I've left no way to modify the metadata on an attribute after the attribute has been created.  Do we need this? 
 
Note that as I was explaining the model of multiple attributes of the same type (distinguished by different metadata) on a DS, some people expressed a dislike of this.  I'll explore that in another mail.
 
Jim

>>> "Jim Sermersheim" <jimse@xxxxxxxxxx> 3/15/07 7:14 PM >>>
Oops, In removing IHasMetadata.addMetadata and IHasMetadata.removeMetadata, I forgot to add a way to update metadata on these:
IAttribute, IContext, IContextFactory, IDigitalSubject, IRelationship.
 
At Novell, we have no practical experience with metadata, so I need guidance.  Upon which of the above objects does Metadata still make sense?  On which (if any) of those need the ability to update the metadata after the object has been created (assume there's a way to set the metadata when creating an object)?
 
In the pre-committed IdAS interfaces, I've only left a way to update metadata on an IDigitalSubject.  I assume we'll need a way to update metadata on an attribute (though I don't know the use case).  I doubt it needs to be updated on an IContextFactory  (is there even a need for metadata on this interface?). I'm not sure about IContext and IRelationship.
 
I found this as I was looking at what it's going to take to update the jena2 CP to these new changes.
 
Jim

>>> "Jim Sermersheim" <jimse@xxxxxxxxxx> 3/15/07 5:53 PM >>>
This is a list of IdAS changes (as well as changes to make other modules adhere to the IdAS changes) I plan to commit.
 
IdAS interface changes which break CP's and/or IdAS consumers:
* Changes to IContext
** No longer extends IHasRelationhips<URI>.  Instead, it directly declares the methods: getRelationships, addRelationship, and removeRelationship (I just moved the methods here, I haven't yet changed their arguments or return values).
** createFilter renamed to buildFilter. There are a number of similar changes were made to make it more obvious that these objects are being built but not added to the backing data store.  The new build* methods take Iteration rather than strongly-typed Iterable<someclass>
** Added these methods (was create* on IFilter): buildAttributeAssertion, buildCUIDAssertion, buildMetadataAssertion, buildTypeAssertion
** Added buildPropertyValue
** Added buildProperty (was createProeprty on IHasProperties)
** Added buildAttribute (was createAttribute on IHasAttributes)
** Added buildMetadata (was createMetadata on IHasMetadata)
** Added buildRelationship (was createRelationship on IHasRelationships)
** Changed addSubject (was a mix of addSubject and createSubject)
** Changed updateSubject to take an Iterator of UpdateOperation objects
* IFilter: Removed create* and moved to build* on IContext
* IHasAttributes changes
** Removed createAttribute, addAttribute, removeAttribute
** getAttribute takes an Iterator of IMetadata objects
* IHasMetadata changes
** Removed createMetadata, addMetadata, removeMetadata
** Added getMetadata
* IHasProperties changes
** Removed createMetadata, addMetadata, removeMetadata
* Deleted IHasRelationships
* IProperty changes:
** getValue now takes a BehaviorOnMulti enum arg which specifies behavior when multiple values exist
** Removed setValue
* AbstractComplexValue, AuthNAnonymousMaterials, AuthNLeastPrivilegedUserMaterials, AuthNLeastPrivilegedUserMaterials, AuthNPropertiesMaterials, and AuthNSelfIssuedMaterials  ctors takes an Iteration rather than Iterable<IProperty>
* BasicAttribute ctors, and other methods changed to match changes to IProperty
* BasicAttributeSet ctor and other methods changed to match changes to IHasAttributes
* Changed BasicComplexValue to match IComplexValue
* Changed BasicFilter to match IFilter
* Changed BasicMetadata to match IMetadata
* Changed BasicMetadataSet to match IHasMetadata
* Changed BasicProperty to match IProperty
* Changed BasicPropertySet to match IHasProperties
* Changed BasicSimpleValue and BasicValue* to match ISimpleValue
 
Other IdAS changes:
* Added BehaviorOnMulti enum
* Added MultipleValuesExistException
* Added UpdateOperation
* Added org.eclipse.higgins.idas.cp.toolkit.BasicContext
** CP's can extend this to get common code and always be up to date with IdAS
** Plan to move other Basic* classes over to this package.
 
Changes to other modules:
* JNDIContext
** extends BasicContext instead of implements IContext
*** removed methods that were implemented by (and in the same way as) BasicContext
*** implemented removeSubject, addSubject, and updateSubject
* JNDIContextFactory
** extends BasicMetadataSet for metadata methods
* JNDIDigitalSubject
** extends BasicMetadataSet
** changed to match IDigitalSubject
*JNDICPTest
** Added test for update operations
** Use new build* methods for filter and assertions
*IssueHandler
** Pass extra arg (null) to IDigitalSubject.getAttribute
** Pass extra arg *BehaviorOnMulti.IGNORE) to IAttribute.getValue.
*** Mike, you probably want to review this  to see if you'd rather pass BehaviorOnMulti.THROW
 
updated javadoc for IdAS can be found here
 
If no one has any issues with this set of changes, I'll commit tomorrow.
 
Are there any other IdAS CPs or IdAS consumers that want me to edit their code for them?
 
Jim
 

Back to the top