i apoligize if this question has already been asked as i am new to this list and didn't see this question in the archives...
 
i wrote a service that uses a simple bean class.  declared it a service in the wsdd.  listed the bean mapping in the wsdd.  i invoked the client tools to generate proxies based on the generated wsdl file for the service.
 
for the absolute classic bean, this works like a charm.  even for very complex hierarchies of 'classic' beans (that is to say the property name has a corresponding attribute of the same name (and case!)
 
public class Service{
    public void grind( Bean bean ){}
}
 
class Bean{
    private String name= null;
    public String getName(){ return name; }
    public void setName( String name ){ this.name = name; }
}
 
however.... for any bean that does not follow that pattern exactly...
 
class Bean{
    public String getName(){ return "";}
    public void setName( String name ){}
}
 
or
 
class Bean{
    private String _name = null;
    public String getName(){ return _name;}
    public void setName( String name ){ this._name = name; }
}
 
NOT AS CHARMING :-(, the client proxy generation does not work ( because the wsdl generation is different)...
 
for my case, i was using aspectj to apply mixins to provide widely used properties...
 
interface Nameable{
    static aspect BODY{
        private String Nameable.name= null;
        public String Nameable.getName(){ return name; }
        public void Nameable.setName( String name ){ this.name = name; }
    }
}
class Bean implements Nameable{}
 
when aspectj introduces the name variable, it provides a namespaced name that is NOT 'name'.  so in this case i must go into client generated proxy classes and 'adjust' the files to work with what i've generated.
 
note this case would not de/serialize if you had calculated fields, as in the proverbial point class, for example
 
class Point{
    private int x = 0;
    private int y = 0;
 
    public int getPi(){  // calc pi from x and y }
    public void setPi( int pi ){ // calc x and y from pi }
 
    public int getRadius(){ // calc pi from x and y }
    public void setRadius(){ // calc x and y from pi }
}
 
so basically, why should the wsdl bean representation care whether my bean is backed by an attribute, a calculation or even no-op.   so long as the interface is a bean, should there be a difference?  i thought the definition of a bean was based on 'properties' not 'attributes'.
 
does anyone know of similar issues?  is this a bug or a feature?
 
thanks for your time on this lengthy email.
 
JP Fielding
Software Engineer - SAIC Morgantown
Work:  (304) 284-9000
Mobile: (304) 685-1744
E-Mail: [EMAIL PROTECTED]
MSIM: [EMAIL PROTECTED]
AIM: jpfieldingSAIC

Reply via email to