You are viewing a plain text version of this content. The canonical link for it is here.
Posted to general@gump.apache.org by "Adam R. B. Jack" <aj...@trysybase.com> on 2004/04/08 20:15:17 UTC
HEADUP - Breaking RSS|Atom URLs. Fw: cvs commit: gump/python/gump/test utils.py
Headsup...
regards
Adam
----- Original Message -----
From: <aj...@apache.org>
To: <gu...@apache.org>
Sent: Thursday, April 08, 2004 12:11 PM
Subject: cvs commit: gump/python/gump/test utils.py
> ajack 2004/04/08 11:11:43
>
> Modified: python/gump/syndication rss.py atom.py
> python/gump/document forrest.py resolver.py
> python/gump/utils __init__.py
> python/gump/test utils.py
> Log:
> 1) add a getBeanAttributes to introspect/get all getX|isX values
> 2) use above to document RunOptions
> 3) a unit test for above (since it wasn't working)
>
> 4) Moved {module}/{project}.html to {module}/{project}/index.html,
> along with associated files (RSS|Atom|Files|Work).
> This ought fix on Jira entry, and ease synchronization (dynamic xdocs).
>
> 5) changed RSS|Atom to rss.xml and atom.xml, since weve broken
> them anyway (they've move) we might as well make the names a
> bit nicer (w/ arbitrary extensions).
>
> Revision Changes Path
> 1.19 +9 -9 gump/python/gump/syndication/rss.py
>
> Index: rss.py
> ===================================================================
> RCS file: /home/cvs/gump/python/gump/syndication/rss.py,v
> retrieving revision 1.18
> retrieving revision 1.19
> diff -u -r1.18 -r1.19
> --- rss.py 29 Feb 2004 19:16:19 -0000 1.18
> +++ rss.py 8 Apr 2004 18:11:43 -0000 1.19
> @@ -272,8 +272,8 @@
> # Main syndication document
> self.run = run
> self.workspace=run.getWorkspace()
> -
self.rssFile=self.run.getOptions().getResolver().getFile(self.workspace,'ind
ex','.rss')
> -
self.rssUrl=self.run.getOptions().getResolver().getUrl(self.workspace,'index
','.rss')
> +
self.rssFile=self.run.getOptions().getResolver().getFile(self.workspace,'rss
','.xml',1)
> +
self.rssUrl=self.run.getOptions().getResolver().getUrl(self.workspace,'rss',
'.xml')
>
> self.rss=RSS(self.rssUrl,self.rssFile, \
> Channel('Jakarta Gump', \
> @@ -289,8 +289,8 @@
>
> def syndicateModule(self,module,mainRSS):
>
> -
rssFile=self.run.getOptions().getResolver().getFile(module,'index','.rss')
> -
rssUrl=self.run.getOptions().getResolver().getUrl(module,'index','.rss')
> +
rssFile=self.run.getOptions().getResolver().getFile(module,'rss','.xml',1)
> +
rssUrl=self.run.getOptions().getResolver().getUrl(module,'rss','.xml')
> moduleUrl=self.run.getOptions().getResolver().getUrl(module)
>
> moduleRSS=RSS(rssUrl,rssFile, \
> @@ -333,8 +333,8 @@
>
> def syndicateProject(self,project,moduleRSS,mainRSS):
>
> -
rssFile=self.run.getOptions().getResolver().getFile(project,project.getName(
),'.rss')
> -
rssUrl=self.run.getOptions().getResolver().getUrl(project,project.getName(),
'.rss')
> +
rssFile=self.run.getOptions().getResolver().getFile(project,'rss','.xml',1)
> +
rssUrl=self.run.getOptions().getResolver().getUrl(project,'rss','.xml')
> projectUrl=self.run.getOptions().getResolver().getUrl(project)
>
> projectRSS=RSS(rssUrl, rssFile, \
>
>
>
> 1.12 +9 -9 gump/python/gump/syndication/atom.py
>
> Index: atom.py
> ===================================================================
> RCS file: /home/cvs/gump/python/gump/syndication/atom.py,v
> retrieving revision 1.11
> retrieving revision 1.12
> diff -u -r1.11 -r1.12
> --- atom.py 20 Jan 2004 21:55:23 -0000 1.11
> +++ atom.py 8 Apr 2004 18:11:43 -0000 1.12
> @@ -175,8 +175,8 @@
> self.run = run
> self.workspace=run.getWorkspace()
>
> -
feedFile=self.run.getOptions().getResolver().getFile(self.workspace,'index',
'.atom')
> -
feedUrl=self.run.getOptions().getResolver().getAbsoluteUrl(self.workspace,'i
ndex','.atom')
> +
feedFile=self.run.getOptions().getResolver().getFile(self.workspace,'atom','
.xml',1)
> +
feedUrl=self.run.getOptions().getResolver().getAbsoluteUrl(self.workspace,'a
tom','.xml')
>
> self.feed=AtomFeed(feedUrl,feedFile, \
> 'workspace', \
> @@ -193,8 +193,8 @@
>
> def syndicateModule(self,module,mainFeed):
>
> -
feedFile=self.run.getOptions().getResolver().getFile(module,'index','.atom')
> -
feedUrl=self.run.getOptions().getResolver().getAbsoluteUrl(module,'index','.
atom')
> +
feedFile=self.run.getOptions().getResolver().getFile(module,'atom','.xml',1)
> +
feedUrl=self.run.getOptions().getResolver().getAbsoluteUrl(module,'atom','.x
ml')
> moduleUrl=self.run.getOptions().getResolver().getUrl(module)
>
> moduleFeed=AtomFeed(feedUrl,feedFile,
> @@ -235,8 +235,8 @@
>
> def syndicateProject(self,project,moduleFeed,mainFeed):
>
> -
feedFile=self.run.getOptions().getResolver().getFile(project,project.getName
(),'.atom')
> -
feedUrl=self.run.getOptions().getResolver().getAbsoluteUrl(project,'index','
.atom')
> +
feedFile=self.run.getOptions().getResolver().getFile(project,'atom','.xml',1
)
> +
feedUrl=self.run.getOptions().getResolver().getAbsoluteUrl(project,'atom','.
xml')
> projectUrl=self.run.getOptions().getResolver().getUrl(project)
>
> projectFeed=AtomFeed(feedUrl, feedFile, \
>
>
>
> 1.136 +4 -13 gump/python/gump/document/forrest.py
>
> Index: forrest.py
> ===================================================================
> RCS file: /home/cvs/gump/python/gump/document/forrest.py,v
> retrieving revision 1.135
> retrieving revision 1.136
> diff -u -r1.135 -r1.136
> --- forrest.py 6 Apr 2004 17:57:35 -0000 1.135
> +++ forrest.py 8 Apr 2004 18:11:43 -0000 1.136
> @@ -283,17 +283,8 @@
> optTable=optSection.createTable(['Name','Value'])
> opts=0
> # iterate over this suites properties
> - for name in options.__dict__:
> - if name.startswith('__') and name.endswith('__'): continue
> - method=getattr(options,name)
> - # avoid nulls, metadata, and methods other than (is|get)*
> - if not method: continue
> - if isinstance(method,types.TypeType): continue
> - if not isinstance(method,types.MethodType): continue
> - if not callable(method): continue
> - if not (name.startswith('get') or name.startswith('is')) :
continue
> -
> - optTable.createEntry(str(name),str(method()))
> + for (name,value) in getBeanAttributes(options).items():
> + optTable.createEntry(str(name),str(value))
> opts+=1
>
> if not opts: optTable.createEntry('None')
> @@ -348,10 +339,10 @@
>
> rssSyndRow=definitionTable.createRow()
> rssSyndRow.createData('Syndication')
> - rssSyndRow.createData().createFork('index.rss','RSS')
> + rssSyndRow.createData().createFork('rss.xml','RSS')
> atomSyndRow=definitionTable.createRow()
> atomSyndRow.createData('Syndication')
> - atomSyndRow.createData().createFork('index.atom','Atom')
> + atomSyndRow.createData().createFork('atom.xml','Atom')
>
> textRow=definitionTable.createRow()
> textRow.createData('Workspace Documentation')
>
>
>
> 1.21 +6 -5 gump/python/gump/document/resolver.py
>
> Index: resolver.py
> ===================================================================
> RCS file: /home/cvs/gump/python/gump/document/resolver.py,v
> retrieving revision 1.20
> retrieving revision 1.21
> diff -u -r1.20 -r1.21
> --- resolver.py 5 Apr 2004 13:38:00 -0000 1.20
> +++ resolver.py 8 Apr 2004 18:11:43 -0000 1.21
> @@ -117,7 +117,7 @@
> elif isinstance(object, Module):
>
path=getPathForObject(object.getWorkspace()).getPostfixed(object.getName())
> elif isinstance(object, Project):
> - path=getPathForObject(object.getModule())
> +
path=getPathForObject(object.getModule()).getPostfixed(object.getName())
> elif isinstance(object, WorkItem):
>
path=getPathForObject(object.getOwner()).getPostfixed('gump_work')
> elif isinstance(object, FileReference):
> @@ -198,17 +198,18 @@
> if not visited:visited=[]
> visited.append(object)
>
> - if isinstance(object, Workspace) or isinstance(object, Module) \
> + if isinstance(object, Workspace) \
> + or isinstance(object, Module) \
> + or isinstance(object, Project) \
> or isinstance(object,StatisticsGuru) \
> or isinstance(object,XRefGuru) :
> document="index"+extn
> elif isinstance(object, GumpEnvironment):
> document="environment"+extn
> - elif isinstance(object, Project) \
> - or isinstance(object, Server) \
> + elif isinstance(object, Server) \
> or isinstance(object, Tracker) \
> or isinstance(object, Repository) \
> - or isinstance(object, FileReference) \
> + or isinstance(object, FileReference) \
> or isinstance(object, WorkItem):
> document=gumpSafeName(object.getName()) + extn
> elif isinstance(object, Ownable) :
>
>
>
> 1.27 +27 -0 gump/python/gump/utils/__init__.py
>
> Index: __init__.py
> ===================================================================
> RCS file: /home/cvs/gump/python/gump/utils/__init__.py,v
> retrieving revision 1.26
> retrieving revision 1.27
> diff -u -r1.26 -r1.27
> --- __init__.py 15 Mar 2004 22:07:06 -0000 1.26
> +++ __init__.py 8 Apr 2004 18:11:43 -0000 1.27
> @@ -321,6 +321,33 @@
> if s[-1] == "\n":
> s = s[:-1]
> return s
> +
> +def getBeanAttributes(bean):
> + attributes={}
> + for name in bean.__class__.__dict__:
> + if name.startswith('__') and name.endswith('__'): continue
> + accessor=getattr(bean,name)
> + # avoid nulls, metadata, and methods other than (is|get)*
> + if not accessor: continue
> + if isinstance(accessor,types.TypeType): continue
> + # Ignore non-methods
> + if not isinstance(accessor,types.MethodType): continue
> + # Ignore non-callable methods (????)
> + if not callable(accessor): continue
> +
> + # Ignore methods not isX or getX
> + # :TODO: Ought check that the X is upper case...
> + if name.startswith('get'):
> + attrName=name[3:]
> + elif name.startswith('is'):
> + attrName=name[2:]
> + else:
> + continue
> +
> + # Get value and stash it
> + attributes[attrName]=accessor()
> +
> + return attributes
>
> def logResourceUtilization(message=None): pass
>
>
>
>
> 1.7 +11 -1 gump/python/gump/test/utils.py
>
> Index: utils.py
> ===================================================================
> RCS file: /home/cvs/gump/python/gump/test/utils.py,v
> retrieving revision 1.6
> retrieving revision 1.7
> diff -u -r1.6 -r1.7
> --- utils.py 2 Apr 2004 16:48:06 -0000 1.6
> +++ utils.py 8 Apr 2004 18:11:43 -0000 1.7
> @@ -21,6 +21,12 @@
> from gump.utils.launcher import Parameters
> from gump.test.pyunit import UnitTestSuite
>
> +class TestBean:
> + #def __init__(self): pass
> + def getX(self): return 1
> + def isY(self): return 0
> + def getYadaYada(self): return 'Yowzer'
> +
> class UtilsTestSuite(UnitTestSuite):
> def __init__(self):
> UnitTestSuite.__init__(self)
> @@ -93,4 +99,8 @@
> #print wrapLine(line)
>
line='1234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890123456
78901234567890123456789012345678901234567890123456789012345678901234567890'
> #print wrapLine(line)
> -
> \ No newline at end of file
> +
> + def testBeanAttributes(self):
> + attrs=getBeanAttributes(TestBean())
> + self.assertNotEmpty('Ought be some', attrs)
> + self.assertNotNone('Ought be one called X', attrs['X'])
> \ No newline at end of file
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: general-unsubscribe@gump.apache.org
> For additional commands, e-mail: general-help@gump.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: general-unsubscribe@gump.apache.org
For additional commands, e-mail: general-help@gump.apache.org