Thanks for the help!

I actually got it working by changing my binding file.  Here is my use case:

public interface Engine{
   void setName(String name);
   String getName();
}

public class EngineImpl implements Engine{
// Implement methods above
}

public class StyleImpl implements Style{
// Didn't show Style interface for brevity
   private Engine engine;
}

I was getting an error using this mapping on the Style binding:
<structure name="engine" field="engine" usage="optional" />

However I changed it to use the 'map-as' attribute and it worked
correctly and stopped trying to instrument the Engine interface.
<structure field="engine" usage="optional"
map-as="com.edmunds.vehicle.jpa.EngineImpl"/>

I wasn't ever trying to reference the actual Engine interface in my
binding file however since the interface was being used in the
StyleImpl class and the binding wasn't specifying a class to use it
was trying to instrument the Engine class.

Thanks again!







On Fri, May 2, 2008 at 2:08 PM, Joshua Davies
<[EMAIL PROTECTED]> wrote:
> 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
>

-------------------------------------------------------------------------
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