Index: status.xml
===================================================================
RCS file: /home/cvs/ws-jaxme/status.xml,v
retrieving revision 1.38
diff -u -r1.38 status.xml
--- status.xml	22 Oct 2004 21:35:06 -0000	1.38
+++ status.xml	28 Oct 2004 20:29:45 -0000
@@ -88,6 +88,12 @@
         types. (Daniel B., daniel at fgm.com) See JAXME-44
         in Jira.
       </action>
+      <action dev="JW" type="fix" context="runtime">
+        A namespace prefix wasn't declared for atomic elements.
+        Marshalling such elements required an outer element
+        with the same namespace. (Dogan Atay, doganatay at yahoo.com)
+        See JAXME-45 in Jira.
+      </action>
     </release>
     <release version="0.3.1" date="2004-Sep-03">
       <action dev="JW" type="fix" context="generator">
Index: src/jaxme/org/apache/ws/jaxme/generator/sg/impl/JAXBSchemaSG.java
===================================================================
RCS file: /home/cvs/ws-jaxme/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/JAXBSchemaSG.java,v
retrieving revision 1.10
diff -u -r1.10 JAXBSchemaSG.java
--- src/jaxme/org/apache/ws/jaxme/generator/sg/impl/JAXBSchemaSG.java	21 Oct 2004 21:00:23 -0000	1.10
+++ src/jaxme/org/apache/ws/jaxme/generator/sg/impl/JAXBSchemaSG.java	28 Oct 2004 20:29:48 -0000
@@ -232,15 +232,17 @@
     ObjectSG[] objects = pController.getObjects();
     for (int i = 0;  i < objects.length;  i++) {
       objects[i].generate();
-      JavaQName qName = objects[i].getClassContext().getXMLHandlerName();
-      pg.setPackageName(qName.getPackageName());
-      pg.setClassName(qName.getClassName() + "X");
-      SPGElement e = objects[i].getSPGElement();
-      try {
-      	pg.execute(e);
-      } catch (Exception ex) {
-        ex.printStackTrace();
-      	throw new SAXException(ex);
+      if (objects[i].getTypeSG().isComplex()) {
+      	JavaQName qName = objects[i].getClassContext().getXMLHandlerName();
+      	pg.setPackageName(qName.getPackageName());
+      	pg.setClassName(qName.getClassName() + "X");
+      	SPGElement e = objects[i].getSPGElement();
+      	try {
+      		pg.execute(e);
+      	} catch (Exception ex) {
+      		ex.printStackTrace();
+      		throw new SAXException(ex);
+      	}
       }
     }
 
Index: src/jaxme/org/apache/ws/jaxme/impl/JMXmlSerializerImpl.java
===================================================================
RCS file: /home/cvs/ws-jaxme/src/jaxme/org/apache/ws/jaxme/impl/JMXmlSerializerImpl.java,v
retrieving revision 1.7
diff -u -r1.7 JMXmlSerializerImpl.java
--- src/jaxme/org/apache/ws/jaxme/impl/JMXmlSerializerImpl.java	2 Oct 2004 00:39:56 -0000	1.7
+++ src/jaxme/org/apache/ws/jaxme/impl/JMXmlSerializerImpl.java	28 Oct 2004 20:29:48 -0000
@@ -150,6 +150,8 @@
                                       QName pQName,
                                       String pValue)
       throws SAXException {
+    NamespaceSupport nss = pData.getNamespaceContext();
+    int context = nss.getContext();
     ContentHandler handler = pData.getContentHandler();
     String uri = pQName.getNamespaceURI();
     String localName = pQName.getLocalPart();
@@ -159,18 +161,18 @@
     	handler.characters(pValue.toCharArray(), 0, pValue.length());
     }
     handler.endElement(uri, localName, qName);
+    restoreContext(nss, context, handler);
   }
 
-  protected void marshalAtomicChild(JMXmlSerializer.Data pData,
-  		                            String pNamespaceURI,
-                                      String pLocalName,
-                                      String pValue)
-      throws SAXException {
-    ContentHandler handler = pData.getContentHandler();
-    String qName = getElementQName(pData, pNamespaceURI, pLocalName);
-    handler.startElement(pNamespaceURI, pLocalName, qName, zeroAttributes);
-    handler.characters(pValue.toCharArray(), 0, pValue.length());
-    handler.endElement(pNamespaceURI, pLocalName, qName);
+  private void restoreContext(NamespaceSupport pNss, int pContext,
+  		                      ContentHandler pHandler) throws SAXException {
+    for (;;) {
+        String prefix = pNss.setContext(pContext);
+        if (prefix == null) {
+          return;
+        }
+        pHandler.endPrefixMapping(prefix);
+      }
   }
 
   public void marshal(JMXmlSerializer.Data pData, QName pName, Object pElement)
@@ -190,13 +192,7 @@
     handler.startElement(uri, name, qName, attrs);
     marshalChilds(pData, pElement);
     handler.endElement(uri, name, qName);
-    for (;;) {
-      String prefix = nss.setContext(context);
-      if (prefix == null) {
-        break;
-      }
-      handler.endPrefixMapping(prefix);
-    }
+    restoreContext(nss, context, handler);
   }
 
   protected void createSchemaLocationAttributes(JMXmlSerializer.Data pData, AttributesImpl pAttrs) throws SAXException {
Index: src/jaxme/org/apache/ws/jaxme/junit/JiraTest.java
===================================================================
RCS file: /home/cvs/ws-jaxme/src/jaxme/org/apache/ws/jaxme/junit/JiraTest.java,v
retrieving revision 1.4
diff -u -r1.4 JiraTest.java
--- src/jaxme/org/apache/ws/jaxme/junit/JiraTest.java	13 Oct 2004 22:51:53 -0000	1.4
+++ src/jaxme/org/apache/ws/jaxme/junit/JiraTest.java	28 Oct 2004 20:29:51 -0000
@@ -1,7 +1,12 @@
 package org.apache.ws.jaxme.junit;
 
+import java.io.StringWriter;
+
+import javax.xml.bind.JAXBContext;
+
 import org.apache.ws.jaxme.test.misc.types.Row;
 import org.apache.ws.jaxme.test.misc.types.impl.RowImpl;
+import org.apache.ws.jaxme.test.misc.xsimport.a.Outer;
 
 import magoffin.matt.ieat.domain.impl.IngredientImpl;
 import net.dspc.commons.activitymodel.TransmissionData;
@@ -85,5 +90,21 @@
         assertTrue(!ingredientImpl.isSetIngredientId());
         ingredientImpl.setIngredientId(new Integer(0));
         assertTrue(ingredientImpl.isSetIngredientId());
+    }
+
+    /** Test for <a href="http://nagoya.apache.org/jira/browse/JAXME-45">JAXME-45</a>
+     */
+    public void testJaxMe45() throws Exception {
+    	Outer outer = new org.apache.ws.jaxme.test.misc.xsimport.a.ObjectFactory().createOuter();
+        outer.setInner1("ok");
+        outer.setInner2(0);
+        JAXBContext context = JAXBContext.newInstance("org.apache.ws.jaxme.test.misc.xsimport.a");
+        StringWriter sw = new StringWriter();
+        context.createMarshaller().marshal(outer, sw);
+        assertEquals("<?xml version='1.0' encoding='UTF-8'?>\n" +
+                     "<a:outer xmlns:a=\"http://ws.apache.org/jaxme/test/misc/xsimport/a\">\n" +
+                     "  <b:inner1 xmlns:b=\"http://ws.apache.org/jaxme/test/misc/xsimport/b\">ok</b:inner1>\n" +
+                     "  <b:inner2 xmlns:b=\"http://ws.apache.org/jaxme/test/misc/xsimport/b\">0</b:inner2>\n" +
+                     "</a:outer>", sw.toString());
     }
 }
Index: src/test/jaxb/jira/jira45.xsd
===================================================================
RCS file: src/test/jaxb/jira/jira45.xsd
diff -N src/test/jaxb/jira/jira45.xsd
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/test/jaxb/jira/jira45.xsd	1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
+    xmlns:a="http://ws.apache.org/jaxme/test/misc/xsimport/a"
+    xmlns:b="http://ws.apache.org/jaxme/test/misc/xsimport/b"
+    targetNamespace="http://ws.apache.org/jaxme/test/misc/xsimport/a"
+    elementFormDefault="qualified"
+    attributeFormDefault="unqualified">
+  <xs:import namespace="http://ws.apache.org/jaxme/test/misc/xsimport/b"
+    schemaLocation="jira45.xsi"/>
+
+	<xs:element name="outer">
+	  <xs:complexType>
+	    <xs:sequence>
+		  <xs:element ref="b:inner1"/>
+		  <xs:element ref="b:inner2"/>
+		</xs:sequence>
+	  </xs:complexType>
+	</xs:element>
+</xs:schema>
Index: src/test/jaxb/jira/jira45.xsi
===================================================================
RCS file: src/test/jaxb/jira/jira45.xsi
diff -N src/test/jaxb/jira/jira45.xsi
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/test/jaxb/jira/jira45.xsi	1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
+    xmlns:b="http://ws.apache.org/jaxme/test/misc/xsimport/b"
+    targetNamespace="http://ws.apache.org/jaxme/test/misc/xsimport/b"
+    elementFormDefault="qualified"
+    attributeFormDefault="unqualified">
+  <xs:element name="inner1" type="xs:string"/>
+  <xs:element name="inner2" type="xs:int"/>
+</xs:schema>
