Most likely, you're trying to map directly to it, which doesn't really
make sense from a jibx perspective - you're telling jibx to instantiate
and populate this interface which, of course, it can't, since interfaces
can't be instantiated.  I'm just guessing, though - I'd have to see your
code to be sure.  Here's an example of a class structure that uses
interfaces that compiles and runs using jibx 1.1.5, for reference:

public interface Person
{
  public String getName();
}

public class Employee implements Person
{
  private String firstName;
  private String lastName;

  public String getName()
  {
    return firstName + " " + lastName;
  }
}

public class Manager implements Person
{
  private String firstName;
  private String lastName;
  private String level;

  public String getName( )
  {
    return firstName + " " + lastName + " " + level;
  }
}

import java.util.ArrayList;

public class TopLevel
{
  private ArrayList< Person > people;

  public String toString( )
  {
    String s = "";
    for ( Person person : people )
    {
      s += person.getName() + "\n";
    }
    return s;
  }
}

<binding direction="input">
  <mapping name="collection" class="TopLevel">
    <collection field="people" />
  </mapping>

  <mapping name="employee" class="Employee">
    <value style="element" name="firstname" field="firstName" />
    <value style="element" name="lastname" field="lastName" />
  </mapping>

  <mapping name="manager" class="Manager">
    <value style="element" name="firstname" field="firstName" />
    <value style="element" name="lastname" field="lastName" />
    <value style="element" name="level" field="level" />
  </mapping>
</binding>

<collection>
  <employee>
    <firstname>Ed</firstname>
    <lastname>Employee</lastname>
  </employee>
  <manager>
    <firstname>Mike</firstname>
    <lastname>Manager</lastname>
    <level>senior</level>
  </manager>
</collection>

This compiles OK because I don't try to refer to the interface "Person"
anywhere in the binding file.  This code works fine even if I jar up
"Person" and reference it by classpath - the jibx compiler never tries
to access it to modify it.

If your actual use case is more complex (go figure), don't hesitate to
post a sample that replicates the actual problem here (although the
smaller the better, of course) and I'll see if I can work out what's
gone wrong.

On Fri, 2008-05-02 at 13:34 -0700, reemo wrote:
> I have a class that is implementing an interface and when I try to run the
> JIBX compiler on the class it complains that it cant modify the actual
> Interface?  Do interfaces have to be available on the classpath as actual
> .class files?  Why would JIBX need to do this?  I know that JIBX has to be
> able to modify the actual class files on the file system (not in a jar)
> unless they are marked "abstract" in the mapping file.
> 
> Error:
> --------
> Cannot modify class com.edmunds.vehicle.Engine
> 
> Any help is greatly apprecaited! 
> 
> Thanks.
> 

-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
jibx-users mailing list
jibx-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jibx-users

Reply via email to