You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by lr...@apache.org on 2007/07/18 16:04:44 UTC

svn commit: r557262 - in /incubator/tuscany/sandbox/amita/das: ./ api/src/main/java/org/apache/tuscany/das/ api/src/main/java/org/apache/tuscany/das/service/ api/src/main/resources/ xquery/src/main/java/org/apache/tuscany/das/xquery/impl/ xquery/src/te...

Author: lresende
Date: Wed Jul 18 07:04:42 2007
New Revision: 557262

URL: http://svn.apache.org/viewvc?view=rev&rev=557262
Log:
Applying Amita's patch for TUSCANY-1431

Modified:
    incubator/tuscany/sandbox/amita/das/api/src/main/java/org/apache/tuscany/das/Command.java
    incubator/tuscany/sandbox/amita/das/api/src/main/java/org/apache/tuscany/das/ConfigHelper.java
    incubator/tuscany/sandbox/amita/das/api/src/main/java/org/apache/tuscany/das/DAS.java
    incubator/tuscany/sandbox/amita/das/api/src/main/java/org/apache/tuscany/das/DASFactory.java
    incubator/tuscany/sandbox/amita/das/api/src/main/java/org/apache/tuscany/das/service/ServiceLoader.java
    incubator/tuscany/sandbox/amita/das/api/src/main/java/org/apache/tuscany/das/service/ServiceProvider.java
    incubator/tuscany/sandbox/amita/das/api/src/main/resources/config.xsd
    incubator/tuscany/sandbox/amita/das/pom.xml
    incubator/tuscany/sandbox/amita/das/xquery/src/main/java/org/apache/tuscany/das/xquery/impl/XQueryDASFactoryImpl.java
    incubator/tuscany/sandbox/amita/das/xquery/src/test/java/org/apache/tuscany/das/xquery/XQueryDASFactoryTestCase.java

Modified: incubator/tuscany/sandbox/amita/das/api/src/main/java/org/apache/tuscany/das/Command.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/amita/das/api/src/main/java/org/apache/tuscany/das/Command.java?view=diff&rev=557262&r1=557261&r2=557262
==============================================================================
--- incubator/tuscany/sandbox/amita/das/api/src/main/java/org/apache/tuscany/das/Command.java (original)
+++ incubator/tuscany/sandbox/amita/das/api/src/main/java/org/apache/tuscany/das/Command.java Wed Jul 18 07:04:42 2007
@@ -59,10 +59,11 @@
     /**
      * Returns the value of the database-generated key. This method is specific 
      * to an "insert" command and will be valid only after the command has
-     * been executed.
+     * been executed. This methos is only relevant when database is data source.
      * 
      * @return the generated key
      */
     int getGeneratedKey();
 
+    public void setDataSourceConnection(DataSourceConnection con);
 }

Modified: incubator/tuscany/sandbox/amita/das/api/src/main/java/org/apache/tuscany/das/ConfigHelper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/amita/das/api/src/main/java/org/apache/tuscany/das/ConfigHelper.java?view=diff&rev=557262&r1=557261&r2=557262
==============================================================================
--- incubator/tuscany/sandbox/amita/das/api/src/main/java/org/apache/tuscany/das/ConfigHelper.java (original)
+++ incubator/tuscany/sandbox/amita/das/api/src/main/java/org/apache/tuscany/das/ConfigHelper.java Wed Jul 18 07:04:42 2007
@@ -1,54 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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.tuscany.das;
-
-
-import org.apache.tuscany.das.config.Config;
-import org.apache.tuscany.das.config.ConfigFactory;
-
-/**
- * A ConfigHelper is used as an aid in programmatic construction of Config instances.
- * Manual contrution fo COnfig is an alternative to providing needed configuration
- * information in an XML file
- * 
- */
-public class ConfigHelper {
-
-    private Config config;
-
-    //private MappingWrapper configWrapper;
-
-    private ConfigFactory factory = ConfigFactory.INSTANCE;
-
-    public ConfigHelper() {
-        config = factory.createConfig();
-        //configWrapper = new MappingWrapper(config);
-    }
-
-    public ConfigHelper(Config config) {
-        this.config = config;
-        //configWrapper = new MappingWrapper(config);
-    }
-
-
-    public Config getConfig() {
-        return config;
-    }
-
-}

Modified: incubator/tuscany/sandbox/amita/das/api/src/main/java/org/apache/tuscany/das/DAS.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/amita/das/api/src/main/java/org/apache/tuscany/das/DAS.java?view=diff&rev=557262&r1=557261&r2=557262
==============================================================================
--- incubator/tuscany/sandbox/amita/das/api/src/main/java/org/apache/tuscany/das/DAS.java (original)
+++ incubator/tuscany/sandbox/amita/das/api/src/main/java/org/apache/tuscany/das/DAS.java Wed Jul 18 07:04:42 2007
@@ -18,8 +18,6 @@
  */
 package org.apache.tuscany.das;
 
-//import org.apache.tuscany.das.rdb.impl.DASFactoryImpl;
-
 import commonj.sdo.DataObject;
 
 /**
@@ -28,9 +26,8 @@
  * 
  */
 public interface DAS {
-
-    //DASFactory FACTORY = new DASFactoryImpl();
-    
+	//hook to specify - e.g. say for XQuery DAS - are we using Saxon/DB2 Express/...
+	public void setImplementationFactory(ImplementationFactory implFactory);
 
     /**
      * The change history is scanned and modifications to the graph of data objects are flushed to the database.
@@ -57,12 +54,12 @@
     void releaseResources();
 
     /**
-     * Creates a Command based on the provided SQL statement
+     * Creates a Command based on the provided Query statement
      * 
-     * @param sql
-     *            The SQL statement
+     * @param queryStr
+     *            The Query statement
      * @return returns a Command instance
      */
-    Command createCommand(String sql);
+    Command createCommand(String queryStr);
 
 }

Modified: incubator/tuscany/sandbox/amita/das/api/src/main/java/org/apache/tuscany/das/DASFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/amita/das/api/src/main/java/org/apache/tuscany/das/DASFactory.java?view=diff&rev=557262&r1=557261&r2=557262
==============================================================================
--- incubator/tuscany/sandbox/amita/das/api/src/main/java/org/apache/tuscany/das/DASFactory.java (original)
+++ incubator/tuscany/sandbox/amita/das/api/src/main/java/org/apache/tuscany/das/DASFactory.java Wed Jul 18 07:04:42 2007
@@ -22,7 +22,7 @@
 import java.sql.Connection;
 import java.util.Iterator;
 
-import org.apache.tuscany.das.config.Config;
+//import org.apache.tuscany.das.config.Config;
 
 import sun.misc.Service;
 
@@ -83,6 +83,8 @@
      * @param connection
      * @return
      */
+    //TODO this should not be directly used, instead createDAS(InputStream configStream, DataSourceConnection connection)
+    //should be used
     public abstract DAS createDAS(InputStream configStream, Connection connection);
     
     /**
@@ -92,7 +94,8 @@
      *            A DAS config object
      * @return returns a DAS instance
      */
-    public abstract DAS createDAS(Config config);
+     //TODO why to have Config here? Let it be only in Impls
+    //public abstract DAS createDAS(Config config);
 
     /**
      * Creates a DAS based on the provided config and connection
@@ -100,15 +103,32 @@
      * @param connection
      * @return
      */
-    public abstract DAS createDAS(Config config, Connection connection);
+    //TODO this should not be directly used, instead createDAS(Object config, DataSourceConnection connection)
+    //should be used
+    //public abstract DAS createDAS(Config config, Connection connection);
 
     /**
      * Creates a DAS based on the provided connection
      * @param connection
      * @return
      */
-    public abstract DAS createDAS(Connection connection);
+    //TODO this should not be directly used, instead createDAS(DataSourceConnection connection)
+    //should be used
+    //public abstract DAS createDAS(Connection connection);
     
+    /**
+     * Connection needs to be generic and not only tied to database connection
+     * as in RDB-DAS, thus introduced DataSourceConnection and used here
+     */
+    public abstract DAS createDAS(DataSourceConnection connection);
+    
+    public abstract DAS createDAS(Object config, DataSourceConnection connection);
+    
+    public abstract DAS createDAS(InputStream configStream, DataSourceConnection connection);
 
+    public abstract DAS createDAS(Object config);
+    
 }
+
+
 

Modified: incubator/tuscany/sandbox/amita/das/api/src/main/java/org/apache/tuscany/das/service/ServiceLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/amita/das/api/src/main/java/org/apache/tuscany/das/service/ServiceLoader.java?view=diff&rev=557262&r1=557261&r2=557262
==============================================================================
--- incubator/tuscany/sandbox/amita/das/api/src/main/java/org/apache/tuscany/das/service/ServiceLoader.java (original)
+++ incubator/tuscany/sandbox/amita/das/api/src/main/java/org/apache/tuscany/das/service/ServiceLoader.java Wed Jul 18 07:04:42 2007
@@ -20,6 +20,8 @@
 package org.apache.tuscany.das.service;
 
 import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
@@ -29,13 +31,15 @@
 import java.util.List;
 import java.util.Map;
 
+import org.apache.log4j.*;
 /**
  * This class loads services present in the class path.
  */
 public class ServiceLoader {
 
      private static Map providerMap = new java.util.Hashtable();
-
+     static Logger log = Logger.getLogger("ServiceLoader.class");
+     
      public static synchronized Iterator providers(Class cls) {
          ClassLoader cl = cls.getClassLoader();
          // null if loaded by bootstrap class loader
@@ -44,67 +48,45 @@
          }
          String serviceFile = "META-INF/services/" + cls.getName();
 
-         // log.debug("File: " + serviceFile);
+          log.debug("File: " + serviceFile);
 
          List lst = (List)providerMap.get(serviceFile);
          if (lst != null) {
+        	 log.debug("file in map returning ");
              return lst.iterator();
          }
 
          lst = new java.util.Vector();
          providerMap.put(serviceFile, lst);
 
-         Enumeration e;
+         //Enumeration e=null;
+         FileInputStream fis=null;
+         InputStream is = null;
          try {
-             e = cl.getResources(serviceFile);
-         } catch (IOException ioe) {
-             return lst.iterator();
+        	 log.debug("getting resource");
+        	 is = cl.getResourceAsStream(serviceFile);
+        	 log.debug("is class "+is.getClass().getName());
+         }catch(Exception ex){
+        	 ex.printStackTrace();
+        	 log.debug("other exception");
          }
 
-         while (e.hasMoreElements()) {
-             try {
-                 java.net.URL u = (java.net.URL)e.nextElement();
-                 //log.debug("URL: " + u);
-
-                 InputStream is = u.openStream();
-                 Reader r = new InputStreamReader(is, "UTF-8");
-                 BufferedReader br = new BufferedReader(r);
-
-                 String line = br.readLine();
-                 while (line != null) {
-                     try {
-                         // First strip any comment...
-                         int idx = line.indexOf('#');
-                         if (idx != -1) {
-                             line = line.substring(0, idx);
-                         }
-
-                         // Trim whitespace.
-                         line = line.trim();
-
-                         // If nothing left then loop around...
-                         if (line.length() == 0) {
-                             line = br.readLine();
-                             continue;
-                         }
-                         // log.debug("Line: " + line);
-
-                         // Try and load the class
-                         // Object obj = cl.loadClass(line).newInstance();
-                         // stick it into our vector...
-                         lst.add(line);
-                     } catch (Exception ex) {
-                         // Just try the next line
-                     }
-
-                     line = br.readLine();
-                 }
-             } catch (Exception ex) {
-                 // Just try the next file...
-             }
-
+         log.debug("am here");
+         
+         if(is != null)
+        	 log.debug("found resource");
+         else
+        	 log.debug("not found resource");
+         
+         try {
+        	 byte[] byt=new byte[is.available()];
+        	 is.read(byt);
+        	 String line = new String(byt);
+        	 log.debug("Line: " + line);
+        	 lst.add(line);
+         }catch(Exception e){
+        	 e.printStackTrace();
          }
          return lst.iterator();
      }
-
  }

Modified: incubator/tuscany/sandbox/amita/das/api/src/main/java/org/apache/tuscany/das/service/ServiceProvider.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/amita/das/api/src/main/java/org/apache/tuscany/das/service/ServiceProvider.java?view=diff&rev=557262&r1=557261&r2=557262
==============================================================================
--- incubator/tuscany/sandbox/amita/das/api/src/main/java/org/apache/tuscany/das/service/ServiceProvider.java (original)
+++ incubator/tuscany/sandbox/amita/das/api/src/main/java/org/apache/tuscany/das/service/ServiceProvider.java Wed Jul 18 07:04:42 2007
@@ -28,22 +28,6 @@
 
 
 public class ServiceProvider {
-    /**
-     * The name of the property used to identify the LogFactory implementation class name.
-     */
-    public static final String FACTORY_PROPERTY = "org.apache.tuscany.das.DASFactory";
-    
-    /**
-     * 'Service Provider' specification ( http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html )
-     */
-    protected static final String SERVICE_ID = "META-INF/services/org.apache.tuscany.das.DASFactory";
-    
-    
-    private static final String FACTORY_RESOURCE = "org.apache.tuscany.das.das";
-    
-    
-    private Map<String, String> registry = new HashMap<String, String>();
-
     private static final ServiceProvider instance = new ServiceProvider();
     
     protected ServiceProvider() {
@@ -54,9 +38,24 @@
         return instance;
     }
     
-       
+    public static DASFactory getDASFactory(){
+    	try{
+            Iterator ps = ServiceLoader.providers(DASFactory.class);
+            while(ps.hasNext()){
+            	String className = (String) ps.next();
+                DASFactory factory = (DASFactory) Class.forName(className).newInstance();
+                System.out.println( factory.getClass().getName() );
+                return factory;
+            }    		
+    	}catch(Exception e){
+    		e.printStackTrace();
+    		return null;	
+    	}
+    	return null;
+    }
+
     public static void Something(){
-//      Second, try to find a service by using the JDK1.3 jar
+    	//Second, try to find a service by using the JDK1.3 jar
         // discovery mechanism. This will allow users to plug a logger
         // by just placing it in the lib/ directory of the webapp ( or in
         // CLASSPATH or equivalent ). This is similar with the second
@@ -67,12 +66,10 @@
             DASFactory factory = (DASFactory) ps.next();
             System.out.println( factory.getClass().getName());
         }
-        
-        
     }
     
     public static void Anotherthing() throws Exception{
-//      Second, try to find a service by using the JDK1.3 jar
+    	//Second, try to find a service by using the JDK1.3 jar
         // discovery mechanism. This will allow users to plug a logger
         // by just placing it in the lib/ directory of the webapp ( or in
         // CLASSPATH or equivalent ). This is similar with the second
@@ -84,14 +81,12 @@
             DASFactory factory = (DASFactory) Class.forName(className).newInstance();
             System.out.println( factory.getClass().getName() );
         }
-        
-        
     }
-
     
     public static void main(String[] args) throws Exception{
         //DASFactory factory = ServiceProvider.getInstance().getFactory(Implementation.LDAP);
-        ServiceProvider.Something();
-        ServiceProvider.Anotherthing();
+        //ServiceProvider.Something();
+        //ServiceProvider.Anotherthing();
+    	ServiceProvider.getDASFactory();
     }
 }

Modified: incubator/tuscany/sandbox/amita/das/api/src/main/resources/config.xsd
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/amita/das/api/src/main/resources/config.xsd?view=diff&rev=557262&r1=557261&r2=557262
==============================================================================
--- incubator/tuscany/sandbox/amita/das/api/src/main/resources/config.xsd (original)
+++ incubator/tuscany/sandbox/amita/das/api/src/main/resources/config.xsd Wed Jul 18 07:04:42 2007
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you 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.
- -->
-<xsd:schema
-   xmlns:config="http:///org.apache.tuscany.das/config.xsd"
-   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-   targetNamespace="http:///org.apache.tuscany.das/config.xsd"
-   elementFormDefault="qualified">
-
-   <xsd:element name="Config" type="config:Config"/> 
-   
-   <xsd:complexType name="Config">
-      <xsd:sequence>
-         <xsd:element  maxOccurs="unbounded" minOccurs="0" name="Command" type="config:Command"/>
-      </xsd:sequence>
-      <xsd:attribute name="uri" type="xsd:string"/>
-      <xsd:attribute name="dataObjectModel" type="xsd:string"/>
-   </xsd:complexType>
-</xsd:schema>

Modified: incubator/tuscany/sandbox/amita/das/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/amita/das/pom.xml?view=diff&rev=557262&r1=557261&r2=557262
==============================================================================
--- incubator/tuscany/sandbox/amita/das/pom.xml (original)
+++ incubator/tuscany/sandbox/amita/das/pom.xml Wed Jul 18 07:04:42 2007
@@ -38,7 +38,7 @@
     
     <modules>
         <module>api</module>
-        <module>ldap</module>
+        <!--<module>ldap</module>-->
         <module>xquery</module>
     </modules>
 

Modified: incubator/tuscany/sandbox/amita/das/xquery/src/main/java/org/apache/tuscany/das/xquery/impl/XQueryDASFactoryImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/amita/das/xquery/src/main/java/org/apache/tuscany/das/xquery/impl/XQueryDASFactoryImpl.java?view=diff&rev=557262&r1=557261&r2=557262
==============================================================================
--- incubator/tuscany/sandbox/amita/das/xquery/src/main/java/org/apache/tuscany/das/xquery/impl/XQueryDASFactoryImpl.java (original)
+++ incubator/tuscany/sandbox/amita/das/xquery/src/main/java/org/apache/tuscany/das/xquery/impl/XQueryDASFactoryImpl.java Wed Jul 18 07:04:42 2007
@@ -5,7 +5,8 @@
 
 import org.apache.tuscany.das.DAS;
 import org.apache.tuscany.das.DASFactory;
-import org.apache.tuscany.das.config.Config;
+import org.apache.tuscany.das.xquery.config.Config;
+import org.apache.tuscany.das.DataSourceConnection;
 
 public class XQueryDASFactoryImpl extends DASFactory {
 	public static final String NAMESPACE = "das://xquery";
@@ -20,26 +21,31 @@
 
     @Override
     public DAS createDAS(InputStream configStream) {
-        return null;
+    	return new XQueryDASImpl(configStream);
     }
 
     @Override
-    public DAS createDAS(Config config) {
-        return null;
+    public DAS createDAS(DataSourceConnection connection){
+    	return new XQueryDASImpl(connection);
     }
-
+    
     @Override
-    public DAS createDAS(InputStream configStream, Connection connection) {
-        return null;
+    public DAS createDAS(Object config){
+    	return new XQueryDASImpl(config);
     }
-
+    
     @Override
-    public DAS createDAS(Config config, Connection connection) {
-        return null;
+    public DAS createDAS(Object config, DataSourceConnection connection) {
+    	return new XQueryDASImpl(config, connection);
     }
-
+        
     @Override
-    public DAS createDAS(Connection connection) {
+    public DAS createDAS(InputStream configStream, DataSourceConnection connection) {
+    	return new XQueryDASImpl(configStream, connection);
+    }
+    
+    public DAS createDAS(InputStream configStream, Connection connection) {
         return null;
     }
+
 }

Modified: incubator/tuscany/sandbox/amita/das/xquery/src/test/java/org/apache/tuscany/das/xquery/XQueryDASFactoryTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/amita/das/xquery/src/test/java/org/apache/tuscany/das/xquery/XQueryDASFactoryTestCase.java?view=diff&rev=557262&r1=557261&r2=557262
==============================================================================
--- incubator/tuscany/sandbox/amita/das/xquery/src/test/java/org/apache/tuscany/das/xquery/XQueryDASFactoryTestCase.java (original)
+++ incubator/tuscany/sandbox/amita/das/xquery/src/test/java/org/apache/tuscany/das/xquery/XQueryDASFactoryTestCase.java Wed Jul 18 07:04:42 2007
@@ -18,10 +18,17 @@
  */
 package org.apache.tuscany.das.xquery;
 
+import java.io.InputStream;
+
 import junit.framework.TestCase;
 
+import org.apache.tuscany.das.Command;
+import org.apache.tuscany.das.DAS;
 import org.apache.tuscany.das.DASFactory;
+import org.apache.tuscany.das.ImplementationFactory;
 import org.apache.tuscany.das.xquery.impl.XQueryDASFactoryImpl;
+import org.apache.tuscany.das.xquery.impl.XQuerySaxonCommandImpl;
+import org.apache.tuscany.das.xquery.service.XQueryServiceProvider;
 
 public class XQueryDASFactoryTestCase extends TestCase {
 
@@ -30,10 +37,64 @@
         super.setUp();
     }
     
-    public void testDiscoverFactoryInstance() {
+    public void testDiscoverDASFactoryInstance() {
         DASFactory factory = DASFactory.getInstance(XQueryDASFactoryImpl.NAMESPACE);
         
+        System.out.println("factory.."+factory.getClass().getName());
         assertNotNull(factory);
         assertEquals(factory.getNamespace(), XQueryDASFactoryImpl.NAMESPACE);
     }
+    
+    public void testGetDASInstance() {
+        DASFactory dasFactory = DASFactory.getInstance(XQueryDASFactoryImpl.NAMESPACE);    	
+    	InputStream configStream = dasFactory.getClass().getClassLoader().getResourceAsStream("BooksCfg.xml");
+    	DAS das = dasFactory.createDAS(configStream);
+    	assertNotNull(das);
+    	assertEquals(das.getClass().getName(), "org.apache.tuscany.das.xquery.impl.XQueryDASImpl");
+    }
+    
+    public void testDiscoverXQueryImplementationFactory() {
+        DASFactory dasFactory = DASFactory.getInstance(XQueryDASFactoryImpl.NAMESPACE);    	
+    	InputStream configStream = dasFactory.getClass().getClassLoader().getResourceAsStream("BooksCfg.xml");
+    	DAS das = dasFactory.createDAS(configStream);
+
+    	ImplementationFactory xqryFactory = XQueryServiceProvider.getInstance().getXQueryFactory();
+    	das.setImplementationFactory(xqryFactory);
+    	assertNotNull(xqryFactory);
+    	assertEquals("org.apache.tuscany.das.xquery.impl.XQuerySaxonFactoryImpl", xqryFactory.getClass().getName());
+    }
+    
+    public void testGetCommand() {
+        DASFactory dasFactory = DASFactory.getInstance(XQueryDASFactoryImpl.NAMESPACE);    	
+    	InputStream configStream = dasFactory.getClass().getClassLoader().getResourceAsStream("BooksCfg.xml");
+    	DAS das = dasFactory.createDAS(configStream);
+
+    	ImplementationFactory xqryFactory = XQueryServiceProvider.getInstance().getXQueryFactory();
+    	das.setImplementationFactory(xqryFactory);
+    	
+    	Command cmd = das.getCommand("readBookCmd");
+    	assertNotNull(cmd);
+    	assertEquals(cmd.getClass().getName(), "org.apache.tuscany.das.xquery.impl.XQuerySaxonCommandImpl");
+    	
+    	if(cmd instanceof XQuerySaxonCommandImpl){
+    		assertEquals(((XQuerySaxonCommandImpl)cmd).getQueryString(),
+    			"//ITEM/TITLE");
+    	}
+    }
+    
+    public void testExecuteCommand() {
+        DASFactory dasFactory = DASFactory.getInstance(XQueryDASFactoryImpl.NAMESPACE);    	
+    	InputStream configStream = dasFactory.getClass().getClassLoader().getResourceAsStream("BooksCfg.xml");
+    	DAS das = dasFactory.createDAS(configStream);
+
+    	ImplementationFactory xqryFactory = XQueryServiceProvider.getInstance().getXQueryFactory();
+    	das.setImplementationFactory(xqryFactory);
+    	
+    	Command cmd = das.getCommand("readBookCmd");
+
+    	if(cmd instanceof XQuerySaxonCommandImpl){
+    		XQuerySaxonCommandImpl xqrySaxoncmd = (XQuerySaxonCommandImpl)cmd;
+    		xqrySaxoncmd.executeQuery();
+    	}
+    }    
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org