U.P. Smalltalkers 2011.03.12

From Computer Science Community

Jump to: navigation, search

Contents

Modtalk development notes.

aRepositoryManager      |       aRepositoryVolume 
aRepositoryInterface    |       aRepository (access, name)
                        |       aRepositoryEntity (type, name)
                        |       anEntityRevision (revisionNumber, (major.minor).(major.minor)....)

[edit] Candidate Classes

class: AccessControl
   accessing
      readers
      writers
      addReader: aDevOrGroup
      addWriter: aDevOrGroup
      removeReader: aDevOrGroup
      removeWriter: aDevOrGroup
   testing
      isAllowedToRead: aDeveloper
      isAllowedToWrite: aDeveloper

Image:U.P. Smalltalkers 2011.03.12 Figure.png

class: RepositoryVolume
   knows repositories
   saveRepositoryAccessInfo
   loadRepositoryAccessInfo
   createRepositoryNamed: aString accessor: aRepositoryAccessor
   registerType: aType codec: aReaderWriterClassName
class: Repository
   knows repositoryEntities
   knows annotations
   knows accessControl
   createRepositoryEntityNamed: aName ofType: aType
class: RepositoryAccessor
   - knows configurationString
   + fromConfigurationString: aString
class: RepositoryEntity
   knows name
   knows type
   createEntityRevision: aRevisionNumber entity: anObject
   getEntityRevision: aRevisionNumber
class: EntityRevision
   knows revisionNumber
   knows repositoryEntity
   commit: anObject revision: aRevisionNumber
   get: aRevisionNumber
   writeStreamForCommit (Hidden behind this interface now with commit:revision:)
   readStreamForGet (Hidden behind this interface now with get:)

[edit] Annotations

Annotation files are to be stored in such a manner as depicted below:

Image:U.P. Smalltalkers 2011.03.12 Figure 2.png

CHANGED: SEE MAY 18, 2011 E-MAIL
Rationale note: The names "Repository, RepositoryEntity, and EntityRevision" are chosen over simply "Repository, Entity, and Revision" because the former contains a chain of relation by virtue of the chosen naming convention. A relation not expressed as clearly with the latter naming convention.

Annotation file contents will be something along the lines of the following:

<Kernel>
   <name>Author</name>
   <value>Bozo</value>
   <type>Package</type>
   <codec>PackageCodec</codec>
</Kernel>

Strike that; should be name/value pairs instead. E.g.:

<name>author</name>
<value>Bozo</value>
<name>type</name>
<value>Package</value>
<name>codec</name>
<value>PackageReaderWriter<value>

[edit] Design Notes

  • Allow nested groups.
  • Anytime anything is modified, a modification time annotation is added.

[edit] To Do

  • Clean up testing with SUnitResources.
  • Move setUp from running to initialize-release in UsersAndGroupsTestCase.
  • Clean up wording from User to Developer in Modtalk-Repository-AccessControl-Tests.
Personal tools
services