Re: How to list modules through a FileInfoEvent on CVSNT

Martin Entlicher <[email protected]> Mon, 05 Apr 2004 14:09:34 +0200
Newsgroups gmane.comp.java.netbeans.modules.javacvs.devel
Message-ID <[email protected]>
Hi Alexander,

No response from “cvs co –s†and “cvs co –c†means that there are no 
modules defined on the server. These commands just read the content of 
CVSROOT/modules file. You need to define the modules there.

"cvs ls" is not a standard cvs command and is not understood by UNIX cvs 
servers. "ls" command is implemented in WinCVS somehow, but not in 
client from http://cvshome.org. This is why it's not implemented in 
NetBeans.

-Martin

Gunnerhell Alexander wrote:

> Hi,
>
> I’ve read the posts about listing modules. However my prototype code 
> doesn’t produce any results (no errors either).
>
> Now I suspect that CVSNT doesn’t support the commands “cvs co –s†and 
> “cvs co –câ€. When I try those commands from the DOS client there’s no 
> response whatsoever from the server. However “cvs ls†works fine:
>
> C:\>cvs ls
>
> Listing modules on server
>
> CVSDummyProj
>
> CVSDummyProj2
>
> CVSROOT
>
> C:\>cvs checkout -s
>
> C:\>cvs checkout -c
>
> C:\>
>
> This is on CVSNT 2.0.15 (client and server reported as one version).
>
> Here’s some code-snippets:
>
> the listeners:
>
> *public* *class* FileInfoListener *extends* CVSAdapter
>
> {
>
> *public* *void* fileInfoGenerated(FileInfoEvent e)
>
> {
>
> System.out.println("fileInfo event received");
>
> PrintStream stream=*new* PrintStream(System.out);
>
> ModuleListInformation info=(ModuleListInformation) e.getInfoContainer();
>
> stream.println(info.getModuleName());
>
> }
>
> }
>
> *public* *class* BasicListener *extends* CVSAdapter
>
> {
>
> /**
>
> * Stores a tagged line
>
> */
>
> *private* *final* StringBuffer taggedLine = *new* StringBuffer();
>
> /**
>
> * Called when the server wants to send a message to be displayed to
>
> * the user. The message is only for information purposes and clients
>
> * can choose to ignore these messages if they wish.
>
> * *@param* e the event
>
> */
>
> *public* *void* messageSent(MessageEvent e)
>
> {
>
> System.out.println("message event received");
>
> String line = e.getMessage();
>
> PrintStream stream = e.isError() ? System.err
>
> : System.out;
>
> *if* (e.isTagged())
>
> {
>
> String message = MessageEvent.parseTaggedMessage(taggedLine, line);
>
> // if we get back a non-null line, we have something
>
> // to output. Otherwise, there is more to come and we
>
> // should do nothing yet.
>
> *if* (message != *null*)
>
> {
>
> stream.println(message);
>
> }
>
> }
>
> *else*
>
> {
>
> stream.println(line);
>
> }
>
> }
>
> the testclient code:
>
> //setup connection
>
> globOpt = *new* GlobalOptions();
>
> globOpt.setCVSRoot(cVSRoot);
>
> globOpt.setUseGzip(*false*);
>
> cvsRP = *new* CVSRootParser(cVSRoot);
>
> pSrvCon = *new* PServerConnection();
>
> pSrvCon.setUserName(cvsRP.user);
>
> pSrvCon.setEncodedPassword(
>
> StandardScrambler.getInstance().scramble(pwd));
>
> pSrvCon.setHostName(cvsRP.host);
>
> pSrvCon.setRepository(cvsRP.repository);
>
> *try*
>
> {
>
> pSrvCon.open();
>
> }
>
> *catch* (AuthenticationException e)
>
> {
>
> // *TODO* Auto-generated catch block
>
> e.printStackTrace();
>
> }
>
> //setup client controller
>
> client = *new* Client(pSrvCon, *new* StandardAdminHandler());
>
> client.setLocalPath(localPath);
>
> //setup listeners
>
> client.getEventManager().addCVSListener(*new* BasicListener());
>
> client.getEventManager().addCVSListener(*new* FileInfoListener());
>
> //setup a co list command
>
> CheckoutCommand listCmd=*new* CheckoutCommand();
>
> listCmd.setShowModulesWithStatus(*true*);
>
> *try*
>
> {
>
> client.executeCommand(listCmd,globOpt);
>
> }
>
> and the output:
>
> message event received
>
> Server is not supporting gzip-file-contents request
>
> What is wrong? Is it my code or the CVSNT server??? If it is my code, 
> I’d appreciate all comments on how to solve this.
>
> Best Regards
>
> Alexander
>