Author: jochen
Date: Fri Oct 21 05:39:56 2005
New Revision: 327163

URL: http://svn.apache.org/viewcvs?rev=327163&view=rev
Log:
Added support for the TaminoAPI4J without the resource adapter.
In other words, this is usable in the absence of an EJB container.

Added:
    
webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/pm/ino/api4j/TaminoAPI4JDbPm.java
    
webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/pm/ino/api4j/TaminoAPI4JRaPm.java
Modified:
    
webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/generator/ino/api4j/TaminoAPI4JSG.java
    
webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/generator/ino/api4j/TaminoAPI4JSchemaSG.java
    
webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/pm/ino/api4j/DocumentDefaultHandler.java
    
webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/pm/ino/api4j/ElementDefaultHandler.java
    
webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/pm/ino/api4j/TJMElement.java
    webservices/jaxme/branches/MAVEN/projects/pm/xdocs/ino.xml

Modified: 
webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/generator/ino/api4j/TaminoAPI4JSG.java
URL: 
http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/generator/ino/api4j/TaminoAPI4JSG.java?rev=327163&r1=327162&r2=327163&view=diff
==============================================================================
--- 
webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/generator/ino/api4j/TaminoAPI4JSG.java
 (original)
+++ 
webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/generator/ino/api4j/TaminoAPI4JSG.java
 Fri Oct 21 05:39:56 2005
@@ -72,9 +72,9 @@
     private static final JavaQName INO_OBJECT_TYPE = 
JavaQNameImpl.getInstance(InoObject.class);
     private static final JavaQName JMELEMENT_TYPE = 
JavaQNameImpl.getInstance(JMElement.class);
 
-    public class RaDetails extends XsObjectImpl {
-        private String collection, jndiReference;
-        RaDetails(XsObject pParent) {
+    public abstract class InoDetails extends XsObjectImpl {
+        private String collection;
+        InoDetails(XsObject pParent) {
             super(pParent);
         }
         public void setCollection(String pCollection) {
@@ -84,6 +84,41 @@
             String p = "taminoapi4j.collection";
             return sgFactory.getGenerator().getProperty(p, collection);
         }
+    }
+
+    public class DbDetails extends InoDetails {
+       private String url, user, password;
+       DbDetails(XsObject pParent) {
+               super(pParent);
+       }
+        public void setUrl(String pUrl) {
+            url = pUrl;
+        }
+        public String getUrl() {
+            String p = "taminoapi4j.url";
+            return sgFactory.getGenerator().getProperty(p, url);
+        }
+        public void setUser(String pUser) {
+            user = pUser;
+        }
+        public String getUser() {
+            String p = "taminoapi4j.user";
+            return sgFactory.getGenerator().getProperty(p, user);
+        }
+        public void setPassword(String pPassword) {
+            password = pPassword;
+        }
+        public String getPassword() {
+            String p = "taminoapi4j.password";
+            return sgFactory.getGenerator().getProperty(p, password);
+        }
+    }
+
+    public class RaDetails extends InoDetails {
+        private String jndiReference;
+        RaDetails(XsObject pParent) {
+            super(pParent);
+        }
         public void setJndiReference(String pReference) {
             jndiReference = pReference;
         }
@@ -94,19 +129,27 @@
     }
 
     private RaDetails raDetails;
+    private DbDetails dbDetails;
     private SGFactory sgFactory;
 
     public TaminoAPI4JSG(SGFactoryChain o) {
         super(o);
     }
 
-    public void setRaDetails(RaDetails pDetails) {
+    public void setRaDetails(RaDetails pDetails) throws SAXException {
         raDetails = pDetails;
     }
     public RaDetails getRaDetails() {
         return raDetails;
     }
-    
+
+    public void setDbDetails(DbDetails pDetails) {
+        dbDetails = pDetails;
+    }
+    public DbDetails getDbDetails() {
+        return dbDetails;
+    }
+
     public void init(SGFactory pFactory) {
         super.init(pFactory);
         sgFactory = pFactory;
@@ -115,16 +158,32 @@
             JaxMeSchemaReader jaxmeSchemaReader = (JaxMeSchemaReader) 
schemaReader;
             jaxmeSchemaReader.addXsObjectCreator(new XsObjectCreator(){
                 public XsObject newBean(XsObject pParent, Locator pLocator, 
XsQName pQName) throws SAXException {
-                    if (pParent instanceof JAXBGlobalBindings) {
+                       if (pParent instanceof JAXBGlobalBindings) {
                         if 
(TAMINOAPI4J_SCHEMA_URI.equals(pQName.getNamespaceURI())) {
                             if ("raDetails".equals(pQName.getLocalName())) {
                                 if (getRaDetails() != null) {
                                     throw new LocSAXException("An element 
named " + pQName + " has already been specified.",
                                                                          
pLocator);
                                 }
+                                if (getDbDetails() != null) {
+                                    throw new LocSAXException("The elements 
dbDetails and raDetails are mutually exclusive.",
+                                                                         
pLocator);
+                                }
                                 RaDetails details = new RaDetails(pParent);
                                 setRaDetails(details);
                                 return details;
+                            } else if 
("dbDetails".equals(pQName.getLocalName())) {
+                               if (getDbDetails() != null) {
+                                       throw new LocSAXException("An element 
named " + pQName + " has already been specified.",
+                                                       pLocator);
+                               }
+                               if (getRaDetails() != null) {
+                                    throw new LocSAXException("The elements 
dbDetails and raDetails are mutually exclusive.",
+                                                                         
pLocator);
+                                }
+                               DbDetails details = new DbDetails(pParent);
+                               setDbDetails(details);
+                               return details;
                             } else {
                                 throw new LocSAXException("Invalid element 
name: " + pQName, pLocator);
                             }

Modified: 
webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/generator/ino/api4j/TaminoAPI4JSchemaSG.java
URL: 
http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/generator/ino/api4j/TaminoAPI4JSchemaSG.java?rev=327163&r1=327162&r2=327163&view=diff
==============================================================================
--- 
webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/generator/ino/api4j/TaminoAPI4JSchemaSG.java
 (original)
+++ 
webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/generator/ino/api4j/TaminoAPI4JSchemaSG.java
 Fri Oct 21 05:39:56 2005
@@ -16,6 +16,7 @@
 
 package org.apache.ws.jaxme.generator.ino.api4j;
 
+
 import java.util.Iterator;
 import java.util.List;
 
@@ -25,7 +26,8 @@
 import org.apache.ws.jaxme.generator.sg.TypeSG;
 import org.apache.ws.jaxme.generator.sg.impl.SchemaSGChainImpl;
 import org.apache.ws.jaxme.impl.JAXBContextImpl;
-import org.apache.ws.jaxme.pm.ino.api4j.TaminoAPI4JPm;
+import org.apache.ws.jaxme.pm.ino.api4j.TaminoAPI4JDbPm;
+import org.apache.ws.jaxme.pm.ino.api4j.TaminoAPI4JRaPm;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
@@ -37,6 +39,8 @@
 public class TaminoAPI4JSchemaSG extends SchemaSGChainImpl {
     private final TaminoAPI4JSG baseSG;
 
+    /** Creates a new instance with the given backing chains.
+     */
     public TaminoAPI4JSchemaSG(SchemaSGChain pChain, TaminoAPI4JSG pBaseSG) {
         super(pChain);
         baseSG = pBaseSG;
@@ -60,7 +64,8 @@
         final Document doc = super.getConfigFile(pController, pPackageName, 
pContextList);
         final Element root = doc.getDocumentElement();
         final Iterator iter = pContextList.iterator();
-        TaminoAPI4JSG.RaDetails details = baseSG.getRaDetails();
+        TaminoAPI4JSG.RaDetails raDetails = baseSG.getRaDetails();
+        TaminoAPI4JSG.DbDetails dbDetails = baseSG.getDbDetails();
         for (Node node = root.getFirstChild();  node != null;  node = 
node.getNextSibling()) {
             if (node.getNodeType() == Node.ELEMENT_NODE
                     &&  
JAXBContextImpl.CONFIGURATION_URI.equals(node.getNamespaceURI())
@@ -68,19 +73,44 @@
                 Element manager = (Element) node;
                 final ObjectSG objectSG = (ObjectSG) iter.next();
                 final TypeSG typeSG = objectSG.getTypeSG();
-                if (typeSG.isComplex()) {
-                    manager.setAttributeNS(uri, "pmClass", 
TaminoAPI4JPm.class.getName());
+                if (!typeSG.isComplex()) {
+                       continue;
                 }
 
-                if (details != null) {
-                    String collection = details.getCollection();
+                final Class managerClass;
+                if (raDetails != null) {
+                    String collection = raDetails.getCollection();
                     if (collection != null  &&  collection.length() > 0) {
                         createProperty(manager, "collection", collection);
                     }
-                    String jndiRef = details.getJndiReference();
+                    String jndiRef = raDetails.getJndiReference();
                     if (jndiRef != null  &&  jndiRef.length() > 0) {
                         createProperty(manager, "jndiReference", jndiRef);
                     }
+                    managerClass = TaminoAPI4JRaPm.class;
+                } else if (dbDetails != null) {
+                       String collection = dbDetails.getCollection();
+                    if (collection != null  &&  collection.length() > 0) {
+                        createProperty(manager, "collection", collection);
+                    }
+                    String url = dbDetails.getUrl();
+                    if (url != null  &&  url.length() > 0) {
+                        createProperty(manager, "url", url);
+                    }
+                    String user = dbDetails.getUser();
+                    if (user != null  &&  user.length() > 0) {
+                        createProperty(manager, "user", user);
+                    }
+                    String password = dbDetails.getPassword();
+                    if (password != null  &&  password.length() > 0) {
+                        createProperty(manager, "password", password);
+                    }
+                    managerClass = TaminoAPI4JDbPm.class;
+                } else {
+                       managerClass = null;
+                }
+                if (managerClass != null) {
+                    manager.setAttributeNS(uri, "pmClass", 
managerClass.getName());
                 }
             }
         }

Modified: 
webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/pm/ino/api4j/DocumentDefaultHandler.java
URL: 
http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/pm/ino/api4j/DocumentDefaultHandler.java?rev=327163&r1=327162&r2=327163&view=diff
==============================================================================
--- 
webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/pm/ino/api4j/DocumentDefaultHandler.java
 (original)
+++ 
webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/pm/ino/api4j/DocumentDefaultHandler.java
 Fri Oct 21 05:39:56 2005
@@ -43,9 +43,6 @@
     static void setUnmarshallerHandler(JMUnmarshallerHandlerImpl pHandler) {
         handler.set(pHandler);
     }
-    
-    public DocumentDefaultHandler() {
-    }
 
     public void startDocument() throws SAXException {
         getUnmarshallerHandler().startDocument();

Modified: 
webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/pm/ino/api4j/ElementDefaultHandler.java
URL: 
http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/pm/ino/api4j/ElementDefaultHandler.java?rev=327163&r1=327162&r2=327163&view=diff
==============================================================================
--- 
webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/pm/ino/api4j/ElementDefaultHandler.java
 (original)
+++ 
webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/pm/ino/api4j/ElementDefaultHandler.java
 Fri Oct 21 05:39:56 2005
@@ -53,9 +53,6 @@
         return (Data) data.get();
     }
 
-    public ElementDefaultHandler() {
-    }
-
     public TSAXElement getFirstElement() {
         List result = getData().result;
         if (result.size() > 0) {

Modified: 
webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/pm/ino/api4j/TJMElement.java
URL: 
http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/pm/ino/api4j/TJMElement.java?rev=327163&r1=327162&r2=327163&view=diff
==============================================================================
--- 
webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/pm/ino/api4j/TJMElement.java
 (original)
+++ 
webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/pm/ino/api4j/TJMElement.java
 Fri Oct 21 05:39:56 2005
@@ -28,16 +28,23 @@
 import com.softwareag.tamino.db.api.objectModel.sax.TSAXElement;
 
 
-/**
- * @author <a href="mailto:[EMAIL PROTECTED]">Jochen Wiedmann</a>
+/** JaxMe specific implementation of
+ * [EMAIL PROTECTED] com.softwareag.tamino.db.api.objectModel.sax.TSAXElement},
+ * and [EMAIL PROTECTED] 
com.softwareag.tamino.db.api.objectModel.sax.TSAXDocument}.
  */
 public class TJMElement implements TSAXDocument, TSAXElement {
     private final InoObject element;
 
+    /** Creates a new instance, which reads or writes
+     * the given [EMAIL PROTECTED] InoObject}.
+     */
     public TJMElement(InoObject pElement) {
         element = pElement;
     }
 
+    /** Returns the [EMAIL PROTECTED] InoObject}, which is being
+     * read, or written.
+     */
     public InoObject getJMElement() {
         return element;
     }
@@ -48,7 +55,7 @@
 
     public void writeTo(Writer pWriter) {
         try {
-            
TaminoAPI4JPm.getJAXBContext().createMarshaller().marshal(getJMElement(), 
pWriter);
+            
TaminoAPI4JRaPm.getJAXBContext().createMarshaller().marshal(getJMElement(), 
pWriter);
         } catch (JAXBException e) {
             throw new UndeclaredThrowableException(e);
         }

Added: 
webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/pm/ino/api4j/TaminoAPI4JDbPm.java
URL: 
http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/pm/ino/api4j/TaminoAPI4JDbPm.java?rev=327163&view=auto
==============================================================================
--- 
webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/pm/ino/api4j/TaminoAPI4JDbPm.java
 (added)
+++ 
webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/pm/ino/api4j/TaminoAPI4JDbPm.java
 Fri Oct 21 05:39:56 2005
@@ -0,0 +1,87 @@
+/*
+ * Copyright 2003, 2004  The Apache Software Foundation
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.ws.jaxme.pm.ino.api4j;
+
+import javax.xml.bind.JAXBException;
+
+import org.apache.ws.jaxme.JMManager;
+import org.apache.ws.jaxme.PMException;
+
+import com.softwareag.tamino.db.api.connection.TConnection;
+import com.softwareag.tamino.db.api.connection.TConnectionFactory;
+import com.softwareag.tamino.db.api.connection.TServerNotAvailableException;
+
+
+/** [EMAIL PROTECTED] org.apache.ws.jaxme.PM} implementation for accessing
+ * a Tamino database via the basic version of the TaminoAPI4J.
+ */
+public class TaminoAPI4JDbPm extends TaminoAPI4JPm {
+       private String url, user, password;
+
+       /** Sets the database URL. This includes the database name,
+        * but not the database collection.
+        */
+       public String getUrl() {
+               return url;
+       }
+
+       /** Returns the database URL. This includes the database name,
+        * but not the database collection.
+        */
+       public void setUrl(String pUrl) {
+               url = pUrl;
+       }
+
+       /** Returns the database user.
+        */
+       public String getUser() {
+               return user;
+       }
+
+       /** Sets the database user.
+        */
+       public void setUser(String pUser) {
+               user = pUser;
+       }
+
+       /** Returns the database users password.
+        */
+       public String getPassword() {
+               return password;
+       }
+
+       /** Sets the database users password.
+        */
+       public void setPassword(String pPassword) {
+               password = pPassword;
+       }
+
+    public void init(JMManager pManager) throws JAXBException {
+        super.init(pManager);
+        url = pManager.getProperty("url");
+        user = pManager.getProperty("user");
+        password = pManager.getProperty("password");
+    }
+
+       protected TConnection getTConnection() throws PMException {
+               TConnectionFactory factory = TConnectionFactory.getInstance();
+               try {
+                       return factory.newConnection(url, user, password);
+               } catch (TServerNotAvailableException e) {
+                       throw new PMException(e);
+               }
+       }
+}

Added: 
webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/pm/ino/api4j/TaminoAPI4JRaPm.java
URL: 
http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/pm/ino/api4j/TaminoAPI4JRaPm.java?rev=327163&view=auto
==============================================================================
--- 
webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/pm/ino/api4j/TaminoAPI4JRaPm.java
 (added)
+++ 
webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/pm/ino/api4j/TaminoAPI4JRaPm.java
 Fri Oct 21 05:39:56 2005
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2003, 2004  The Apache Software Foundation
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.ws.jaxme.pm.ino.api4j;
+
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import javax.xml.bind.JAXBException;
+
+import org.apache.ws.jaxme.JMManager;
+import org.apache.ws.jaxme.PMException;
+
+import com.softwareag.tamino.db.api.connection.TConnection;
+import com.softwareag.tamino.db.api.connection.TServerNotAvailableException;
+import com.softwareag.tamino.db.api.connector.TaminoDataSource;
+
+
+/** [EMAIL PROTECTED] org.apache.ws.jaxme.PM} implementation for accessing
+ * a Tamino database via the resource adapter version of the
+ * TaminoAPI4J.
+ */
+public class TaminoAPI4JRaPm extends TaminoAPI4JPm {
+    private String jndiReference;
+
+    /** Returns the JNDI reference.
+     */
+    public String getJndiReference() {
+        return jndiReference;
+    }
+
+    /** Sets the JNDI reference.
+     */
+    public void setJndiReference(String pJndiReference) {
+        jndiReference = pJndiReference;
+    }
+
+    protected TConnection getTConnection() throws PMException {
+       TaminoDataSource tds;
+       try {
+               InitialContext ic = new InitialContext();
+               tds = (TaminoDataSource) ic.lookup(jndiReference);
+       } catch (NamingException e) {
+               throw new PMException(e);
+       }
+       try {
+                       return tds.getConnection();
+               } catch (TServerNotAvailableException e) {
+                       throw new PMException(e);
+               }
+    }
+
+    public void init(JMManager pManager) throws JAXBException {
+        super.init(pManager);
+        jndiReference = pManager.getProperty("jndiReference");
+        if (jndiReference == null  ||  jndiReference.length() == 0) {
+            throw new JAXBException("The property 'jndiReference' must be 
set.");
+        }
+    }
+}

Modified: webservices/jaxme/branches/MAVEN/projects/pm/xdocs/ino.xml
URL: 
http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/projects/pm/xdocs/ino.xml?rev=327163&r1=327162&r2=327163&view=diff
==============================================================================
--- webservices/jaxme/branches/MAVEN/projects/pm/xdocs/ino.xml (original)
+++ webservices/jaxme/branches/MAVEN/projects/pm/xdocs/ino.xml Fri Oct 21 
05:39:56 2005
@@ -76,6 +76,12 @@
        </section>
 
        <section name="Preparing the Tamino Resource Adapter">
+               <p>If you are not using the Tamino Resource Adapter (which
+                 is typically the case, if you are <em>not</em> using
+                 an EJB container like JBoss, WebSphere, or the like.
+                 In that case you may very well skip this section and
+                 proceed to the next section, which is about creating
+                 the schema file.</p>
                <p>Adding the Tamino Resource Adapter is covered in the
                  documentation of the TaminoAPI4J. However, we'll provide
                  specific details for JBoss 3.2 here, because the docs
@@ -197,6 +203,11 @@
       <jaxb:globalBindings>
         <xjc:serializable/>
         <inoapi:raDetails collection="adr" 
jndiReference="java:MyTaminoLocalTxConnector"/>
+        <!-- If you are not using the Tamino Resource Adapter, then the 
following
+             will fit for you:
+          <inoapi:dbDetails collection="adr" 
url="http://127.0.0.1/tamino/adrDb";
+            user="me" password="MySecretPassword"/>
+        -->
       </jaxb:globalBindings>
       <tsd:schemaInfo name="Address">
         <tsd:collection name="adr"></tsd:collection>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to