Gemini Community Support Site

This Gemini community support site can be used to find solutions to product issues. You can log in using Open Id, Google Profile and even Facebook. Feel free to ask a question or browse FAQs and documentation. Product tour videos are also available along with how-to videos demonstrating key Gemini capabilities.




Plugin produces "Cannot create an abstract class"

web-app

Greetings,

I have just installed Gemini 2.05 and I am very impressed. However before I purchase, I have been attempting to make a start on integrating Gemini with our Perforce source control system.

I have developed a basic plugin DLL according to the documentation but Gemini always spits an error to it's log stating that it "cannot create an abstract class".

I have checked all the forums and followed tha advice I have found there but this has not helped. I am deriving my class from AbstractIssueListener and have verified that I am overriding all the interface methods.

I though it might be that I was using VS.NET 2005 and .NET 2.0 but I have tried compiling my plugin using .NET 1.1 and this made no difference. I have also tried placing the plugin DLL in both the bin and bin/plugins directories just to be on the safe side.

I even copied the source code of the sample mail plugin and then stripped out all the SMPT and SQL code so that it provided a skeleton. Still I get the same error message.

What am I doing wrong?

 

Here is my code and I can provide a compiled version if required. Please help, this is a show stopper for us using Gemini.

 

--- Code ---

using System;

using CounterSoft.GeminiLib;

namespace CounterSoft.GeminiPlugins
{
 public class MailPlugin : AbstractIssueListener
 {
  public MailPlugin()
  {
   try
   {
    // do nothing
   }
   catch(Exception ex)
   {
    GeminiHelper.LogException(ex);
   }
  }

  public override string Description
  {
   get
   {
    return "MaxIT Perforce Plugin";
   }
   set
   {
    base.Description = value;
   }
  }

  
  public override void IssueCreated(IssueEventArgs args)
  {
   try
   {
    // do nothing
   }
   catch(Exception ex)
   {
    GeminiHelper.LogException(ex);
   }
  }

  public override void IssueUpdated(IssueEventArgs args)
  {
   try
   {
    // do nothing
   }
   catch(Exception ex)
   {
    GeminiHelper.LogException(ex);
   }
  }

  public override void IssueCommented(IssueEventArgs args)
  {
   try
   {
    // do nothing
   }
   catch(Exception ex)
   {
    GeminiHelper.LogException(ex);
   }
  }

  public override void IssueStatusChange(IssueEventArgs args)
  {
   try
   {
    // do nothing
   }
   catch(Exception ex)
   {
    GeminiHelper.LogException(ex);
   }
  }

  public override void IssueResolutionChange(IssueEventArgs args)
  {
   try
   {
    // do nothing
   }
   catch(Exception ex)
   {
    GeminiHelper.LogException(ex);
   }
  }

  public override void IssueDeleted(IssueEventArgs args)
  {
   try
   {
    // do nothing
   }
   catch(Exception ex)
   {
    GeminiHelper.LogException(ex);
   }
  }

  public override void IssueAssigned(IssueEventArgs args)
  {
   try
   {
    // do nothing
   }
   catch(Exception ex)
   {
    GeminiHelper.LogException(ex);
   }
  }

  public override void IssueClosed(IssueEventArgs args)
  {
   try
   {
    // do nothing
   }
   catch(Exception ex)
   {
    GeminiHelper.LogException(ex);
   }
  }

  public override void IssueResolved(IssueEventArgs args)
  {
   try
   {
    // do nothing
   }
   catch(Exception ex)
   {
    GeminiHelper.LogException(ex);
   }
  }

  public override void IssueWatcherAdded(IssueEventArgs args)
  {
   try
   {
    // do nothing
   }
   catch(Exception ex)
   {
    GeminiHelper.LogException(ex);
   }
  }

 }
}

tblizard
· 1
tblizard
Replies (1)
helpful
0
not helpful

I've just used your code with no issues.

What type of project are you using?

It should be a .NET 1.1 class library.


Saar Cohen
· 5000
Saar Cohen