[jboss-dev-forums] [Design of JBossXB] - Re: @XmlElementWrapper/@XmlElements

alex.loubyansky@jboss.com do-not-reply at jboss.com
Fri Oct 12 10:36:50 EDT 2007


This should be closer to what we would like to have
   @XmlRootElement
  |    public static class Application
  |    {
  |       private List<Module> modules;
  |       
  |       public void setModules(List<Module> modules)
  |       {
  |          this.modules = modules;
  |       }
  |       
  |       @XmlElement(name="module", type=ModuleHolder.class)
  |       public List<Module> getModules()
  |       {
  |          return modules;
  |       }
  |    }
  |    
  |    public static class ModuleAdapter extends XmlAdapter<ModuleHolder, Module>
  |    {
  |       @Override
  |       public ModuleHolder marshal(Module arg0) throws Exception
  |       {
  |          // TODO Auto-generated method stub
  |          return null;
  |       }
  | 
  |       @Override
  |       public Module unmarshal(ModuleHolder arg0) throws Exception
  |       {
  |          return arg0.getModule();
  |       }
  |    }
  |    
  |    @XmlJavaTypeAdapter(value = ModuleAdapter.class)
  |    public static class ModuleHolder
  |    {
  |       private Module module;
  |       
  |       public void setModule(Module module)
  |       {
  |          this.module = module;
  |       }
  |       
  |       @XmlTransient
  |       public Module getModule()
  |       {
  |          return module;
  |       }
  |       
  |       public void setConnector(ConnectorModule module)
  |       {
  |          this.module = module;
  |       }
  |       
  |       public ConnectorModule getConnector()
  |       {
  |          return (ConnectorModule) module;
  |       }
  | 
  |       
  |       public void setEjb(EjbModule module)
  |       {
  |          this.module = module;
  |       }
  |       
  |       public EjbModule getEjb()
  |       {
  |          return (EjbModule) module;
  |       }
  | 
  |       public void setJava(JavaModule module)
  |       {
  |          this.module = module;
  |       }
  |       
  |       public JavaModule getJava()
  |       {
  |          return (JavaModule) module;
  |       }
  |    }
  |    
  |    public static abstract class Module
  |    {
  |       private String value;
  |       
  |       public void setValue(String value)
  |       {
  |          this.value = value;
  |       }
  |       
  |       @XmlValue
  |       public String getValue()
  |       {
  |          return value;
  |       }
  |    }
  |    
  |    public static class ConnectorModule extends Module
  |    {
  |    }
  | 
  |    public static class EjbModule extends Module
  |    {
  |    }
  | 
  |    public static class JavaModule extends Module
  |    {
  |    }

But there is an issue... currently it applies the adapter to the collection of modules as well as to the each module separately. I am looking into it.

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4094623#4094623

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4094623



More information about the jboss-dev-forums mailing list