Update of /cvsroot/jaxme/JaxMe2/src/net/sf/jaxme/generator/events/impl
In directory sc8-pr-cvs1:/tmp/cvs-serv32423/src/net/sf/jaxme/generator/events/impl
Added Files:
TypeHandler.java JMSchemaInfo.java JMTypeListener.java
JMSGListener.java JMGlobalInfo.java SGHandlerImpl.java
JMObjectListener.java SchemaBindingsHandler.java
ClassDeclaration.java JMSchemaBindingsListener.java
ObjectHandler.java HandlerImpl.java
Log Message:
Added the events framework to support the development of
SchemaReaders.
--- NEW FILE: TypeHandler.java ---
package net.sf.jaxme.generator.events.impl;
import java.util.Iterator;
import net.sf.jaxme.generator.events.TypeListener;
import net.sf.jaxme.generator.jaxb.impl.JAXBSchemaImpl;
import net.sf.jaxme.generator.types.SchemaTypeContext;
import org.w3c.dom.Element;
/**
* @author <a href="mailto:[EMAIL PROTECTED]">Jochen Wiedmann</a>
*/
public class TypeHandler extends HandlerImpl implements TypeListener {
public void eventType(JAXBSchemaImpl pSchema, Element pDocumentElement,
Element pTypeElement, SchemaTypeContext pType)
throws Exception {
for (Iterator iter = getListeners(); iter.hasNext(); ) {
((TypeListener) iter.next()).eventType(pSchema, pDocumentElement,
pTypeElement, pType);
}
}
}
--- NEW FILE: JMSchemaInfo.java ---
package net.sf.jaxme.generator.events.impl;
import java.util.Iterator;
/**
* @author <a href="mailto:[EMAIL PROTECTED]">Jochen Wiedmann</a>
*/
public class JMSchemaInfo extends JMGlobalInfo {
private JMGlobalInfo globalInfo;
/** <p>Sets the global info.</p>
*/
public void setGlobalInfo(JMGlobalInfo pGlobalInfo) {
globalInfo = pGlobalInfo;
}
/** <p>Returns the global info.</p>
*/
public JMGlobalInfo getGlobalInfo() {
return globalInfo;
}
public ClassDeclaration getClassDeclaration(String pType) {
for (Iterator iter = getClassDeclarations(); iter.hasNext(); ) {
ClassDeclaration cd = (ClassDeclaration) iter.next();
if (cd.getType().equals(pType)) {
return cd;
}
}
JMGlobalInfo globalInfo = getGlobalInfo();
if (globalInfo != null) {
for (Iterator iter = globalInfo.getClassDeclarations(); iter.hasNext(); ) {
ClassDeclaration cd = (ClassDeclaration) iter.next();
if (cd.getType().equals(pType)) {
return cd;
}
}
}
return null;
}
}
--- NEW FILE: JMTypeListener.java ---
package net.sf.jaxme.generator.events.impl;
import net.sf.jaxme.generator.events.TypeListener;
import net.sf.jaxme.generator.jaxb.impl.JAXBSchemaImpl;
import net.sf.jaxme.generator.types.SchemaTypeContext;
import org.w3c.dom.Element;
/**
* @author <a href="mailto:[EMAIL PROTECTED]">Jochen Wiedmann</a>
*/
public class JMTypeListener implements TypeListener {
public void eventType(JAXBSchemaImpl pSchema, Element pDocumentElement,
Element pTypeElement, SchemaTypeContext pType)
throws Exception {
}
}
--- NEW FILE: JMSGListener.java ---
package net.sf.jaxme.generator.events.impl;
import net.sf.jaxme.generator.SchemaException;
import net.sf.jaxme.generator.events.SGListener;
import net.sf.jaxme.generator.javasg.TypeSG;
import net.sf.jaxme.generator.types.SchemaType;
/**
* @author <a href="mailto:[EMAIL PROTECTED]">Jochen Wiedmann</a>
*/
public class JMSGListener implements SGListener {
public TypeSG eventTypeSG(SchemaType pType, TypeSG pTypeSG)
throws SchemaException {
return pTypeSG;
}
}
--- NEW FILE: JMGlobalInfo.java ---
package net.sf.jaxme.generator.events.impl;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* @author <a href="mailto:[EMAIL PROTECTED]">Jochen Wiedmann</a>
*/
public class JMGlobalInfo {
private List classDeclarations = new ArrayList();
/** <p>Adds a new class declaration to the given list.</p>
*/
public void addClassDeclaration(ClassDeclaration pClassDeclaration) {
classDeclarations.add(pClassDeclaration);
}
/** <p>Returns an iterator to the list of all class declarations.</p>
*/
public Iterator getClassDeclarations() {
return classDeclarations.iterator();
}
}
--- NEW FILE: SGHandlerImpl.java ---
package net.sf.jaxme.generator.events.impl;
import java.util.Iterator;
import net.sf.jaxme.generator.SchemaException;
import net.sf.jaxme.generator.events.SGListener;
import net.sf.jaxme.generator.javasg.TypeSG;
import net.sf.jaxme.generator.types.SchemaType;
/**
* @author <a href="mailto:[EMAIL PROTECTED]">Jochen Wiedmann</a>
*/
public class SGHandlerImpl extends HandlerImpl implements SGListener {
public TypeSG eventTypeSG(SchemaType pType, TypeSG pTypeSG) throws SchemaException {
for (Iterator iter = getListeners(); iter.hasNext(); ) {
pTypeSG = ((SGListener) iter.next()).eventTypeSG(pType, pTypeSG);
}
return pTypeSG;
}
}
--- NEW FILE: JMObjectListener.java ---
package net.sf.jaxme.generator.events.impl;
import net.sf.jaxme.generator.events.ObjectListener;
import net.sf.jaxme.generator.jaxb.impl.JAXBSchemaImpl;
import net.sf.jaxme.generator.schema.ComplexTypeContent;
import net.sf.jaxme.generator.schema.SchemaAttribute;
import net.sf.jaxme.generator.schema.SchemaAttributeGroup;
import net.sf.jaxme.generator.schema.SchemaElement;
import org.w3c.dom.Element;
/**
* @author <a href="mailto:[EMAIL PROTECTED]">Jochen Wiedmann</a>
*/
public class JMObjectListener implements ObjectListener {
public void eventElement(JAXBSchemaImpl pSchema, Element pDocumentElement,
Element pDeclaringElement, SchemaElement pElement)
throws Exception {
}
public void eventAttribute(JAXBSchemaImpl pSchema, Element pDocumentElement,
Element pDeclaringElement, SchemaAttribute pAttribute)
throws Exception {
}
public void eventAttributeGroup(JAXBSchemaImpl pSchema, Element pDocumentElement,
Element pDeclaringElement, SchemaAttributeGroup
pGroup)
throws Exception {
}
public void eventComplexTypeContent(JAXBSchemaImpl pSchema, Element pDocumentElement,
Element pDeclaringElement, ComplexTypeContent
pContent)
throws Exception {
}
}
--- NEW FILE: SchemaBindingsHandler.java ---
package net.sf.jaxme.generator.events.impl;
import java.util.Iterator;
import net.sf.jaxme.generator.events.SchemaBindingsListener;
import net.sf.jaxme.generator.jaxb.impl.JAXBGlobalSchema;
import net.sf.jaxme.generator.jaxb.impl.JAXBSchemaImpl;
import org.w3c.dom.Element;
/**
* @author <a href="mailto:[EMAIL PROTECTED]">Jochen Wiedmann</a>
*/
public class SchemaBindingsHandler extends HandlerImpl
implements SchemaBindingsListener {
public void eventGlobalBindings(JAXBGlobalSchema pSchema,
Element pDocumentElement,
Element pAppInfoElement) throws Exception {
for (Iterator iter = getListeners(); iter.hasNext(); ) {
SchemaBindingsListener listener = (SchemaBindingsListener) iter.next();
listener.eventGlobalBindings(pSchema, pDocumentElement, pAppInfoElement);
}
}
public void eventSchemaBindings(JAXBSchemaImpl pSchema,
Element pDocumentElement,
Element pAppInfoElement) throws Exception {
for (Iterator iter = getListeners(); iter.hasNext(); ) {
SchemaBindingsListener listener = (SchemaBindingsListener) iter.next();
listener.eventSchemaBindings(pSchema, pDocumentElement, pAppInfoElement);
}
}
}
--- NEW FILE: ClassDeclaration.java ---
package net.sf.jaxme.generator.events.impl;
import java.util.List;
import java.lang.NullPointerException;
import java.lang.String;
import java.util.HashSet;
import java.util.ArrayList;
import java.lang.IllegalStateException;
import java.util.Iterator;
import java.util.Set;
public class ClassDeclaration {
public class ClassReference {
private String name;
public void setName(String pName) {
name = pName;
}
public String getName() {
return name;
}
public void finish() {
if (getName() == null || getName().length() == 0) {
throw new NullPointerException("A class reference must have a 'name'
attribute.");
}
}
}
private String type;
private boolean isAbstract;
private List extendsList = new ArrayList();
private List implementsList = new ArrayList();
public void setType(String pType) {
type = pType;
}
public String getType() {
return type;
}
public void setAbstract(boolean pAbstract) {
isAbstract = pAbstract;
}
public boolean isAbstract() {
return isAbstract;
}
public void finish() {
if (getType() == null || getType().length() == 0) {
throw new NullPointerException("A class declaration must have a 'type'
attribute.");
}
Set extendsSet = new HashSet();
for (Iterator iter = extendsList.iterator(); iter.hasNext(); ) {
ClassReference ref = (ClassReference) iter.next();
if (extendsSet.contains(ref.getName())) {
throw new IllegalStateException("Multiple extends definitions with the name " +
ref.getName() + " found");
}
extendsSet.add(ref.getName());
}
Set implementsSet = new HashSet();
for (Iterator iter = implementsList.iterator(); iter.hasNext(); ) {
ClassReference ref = (ClassReference) iter.next();
if (implementsSet.contains(ref.getName())) {
throw new IllegalStateException("Multiple implements definitions with the name
" +
ref.getName() + " found");
}
implementsSet.add(ref.getName());
}
}
public ClassReference createExtends() {
ClassReference reference = new ClassReference();
extendsList.add(reference);
return reference;
}
public Iterator getExtends() {
return extendsList.iterator();
}
public ClassReference createImplements() {
ClassReference reference = new ClassReference();
implementsList.add(reference);
return reference;
}
public Iterator getImplements() {
return implementsList.iterator();
}
}
--- NEW FILE: JMSchemaBindingsListener.java ---
package net.sf.jaxme.generator.events.impl;
import java.util.Iterator;
import net.sf.jaxme.generator.events.SchemaBindingsListener;
import net.sf.jaxme.generator.impl.JaxMeSchemaWriter;
import net.sf.jaxme.generator.jaxb.impl.JAXBGlobalSchema;
import net.sf.jaxme.generator.jaxb.impl.JAXBSchemaImpl;
import net.sf.jaxme.generator.jaxb.impl.JAXBSchemaReader;
import net.sf.jaxme.generator.util.DOM;
import net.sf.jaxme.util.Configurator;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
/**
* @author <a href="mailto:[EMAIL PROTECTED]">Jochen Wiedmann</a>
*/
public class JMSchemaBindingsListener implements SchemaBindingsListener {
private JAXBSchemaReader schemaReader;
private String key;
public void setSchemaReader(JAXBSchemaReader pReader) {
schemaReader = pReader;
}
public JAXBSchemaReader getJaxMeSchemaReader() {
return schemaReader;
}
public void setKey(String pKey) {
key = pKey;
}
public String getKey() {
return key;
}
public void eventGlobalBindings(JAXBGlobalSchema pSchema,
Element pDocumentElement,
Element pAppInfoElement)
throws Exception {
if (pAppInfoElement == null) {
return;
}
for (Iterator iter = DOM.getChildElements(pAppInfoElement,
JaxMeSchemaWriter.JAXME_SCHEMA_URI,
"class");
iter.hasNext(); ) {
ClassDeclaration classDeclaration = new ClassDeclaration();
Configurator.parse((Node) iter.next(), classDeclaration);
JMGlobalInfo globalInfo = JaxMeSchemaWriter.getGlobalInfo(pSchema, getKey());
globalInfo.addClassDeclaration(classDeclaration);
}
}
public void eventSchemaBindings(JAXBSchemaImpl pSchema,
Element pDocumentElement,
Element pAppInfoElement)
throws Exception {
if (pAppInfoElement == null) {
return;
}
for (Iterator iter = DOM.getChildElements(pAppInfoElement,
JaxMeSchemaWriter.JAXME_SCHEMA_URI,
"class");
iter.hasNext(); ) {
ClassDeclaration classDeclaration = new ClassDeclaration();
Configurator.parse((Node) iter.next(), classDeclaration);
JMSchemaInfo schemaInfo = JaxMeSchemaWriter.getSchemaInfo(pSchema, getKey());
schemaInfo.addClassDeclaration(classDeclaration);
}
}
}
--- NEW FILE: ObjectHandler.java ---
package net.sf.jaxme.generator.events.impl;
import java.util.Iterator;
import net.sf.jaxme.generator.events.ObjectListener;
import net.sf.jaxme.generator.jaxb.impl.JAXBSchemaImpl;
import net.sf.jaxme.generator.schema.ComplexTypeContent;
import net.sf.jaxme.generator.schema.SchemaAttribute;
import net.sf.jaxme.generator.schema.SchemaAttributeGroup;
import net.sf.jaxme.generator.schema.SchemaElement;
import org.w3c.dom.Element;
/**
* @author <a href="mailto:[EMAIL PROTECTED]">Jochen Wiedmann</a>
*/
public class ObjectHandler extends HandlerImpl implements ObjectListener {
public void eventElement(JAXBSchemaImpl pSchema,
Element pDocumentElement,
Element pDeclaringElement,
SchemaElement pElement)
throws Exception {
for (Iterator iter = getListeners(); iter.hasNext(); ) {
((ObjectListener) iter.next()).eventElement(pSchema, pDocumentElement,
pDeclaringElement, pElement);
}
}
public void eventAttribute(JAXBSchemaImpl pSchema, Element pDocumentElement,
Element pDeclaringElement, SchemaAttribute pAttribute)
throws Exception {
for (Iterator iter = getListeners(); iter.hasNext(); ) {
((ObjectListener) iter.next()).eventAttribute(pSchema, pDocumentElement,
pDeclaringElement, pAttribute);
}
}
public void eventAttributeGroup(JAXBSchemaImpl pSchema, Element pDocumentElement,
Element pDeclaringElement, SchemaAttributeGroup
pGroup)
throws Exception {
for (Iterator iter = getListeners(); iter.hasNext(); ) {
((ObjectListener) iter.next()).eventAttributeGroup(pSchema, pDocumentElement,
pDeclaringElement, pGroup);
}
}
public void eventComplexTypeContent(JAXBSchemaImpl pSchema, Element pDocumentElement,
Element pDeclaringElement, ComplexTypeContent
pContent)
throws Exception {
for (Iterator iter = getListeners(); iter.hasNext(); ) {
((ObjectListener) iter.next()).eventComplexTypeContent(pSchema, pDocumentElement,
pDeclaringElement,
pContent);
}
}
}
--- NEW FILE: HandlerImpl.java ---
package net.sf.jaxme.generator.events.impl;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.NoSuchElementException;
import net.sf.jaxme.generator.events.Handler;
import net.sf.jaxme.generator.events.Listener;
/** <p>Default implementation of a [EMAIL PROTECTED] Handler}. The implementation
* is expected to add handler specific methods that notify the events.</p>
*
* @author <a href="mailto:[EMAIL PROTECTED]">Jochen Wiedmann</a>
*/
public class HandlerImpl implements Handler {
private List listeners = new ArrayList();
/** <p>Creates a new instance of HandlerImpl.</p>
*/
public HandlerImpl() {
}
public void addListener(Listener pListener) {
listeners.add(pListener);
}
public void removeListener(Listener pListener)
throws NoSuchElementException {
if (!listeners.remove(pListener)) {
throw new NoSuchElementException("The listener list did not contain the element
" + pListener);
}
}
public Iterator getListeners() {
return listeners.iterator();
}
}
-------------------------------------------------------
This SF.net email is sponsored by:Crypto Challenge is now open!
Get cracking and register here for some mind boggling fun and
the chance of winning an Apple iPod:
http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0031en
_______________________________________________
Jaxme-jaxb-dev mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jaxme-jaxb-dev