You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juddi.apache.org by al...@apache.org on 2014/12/27 04:18:57 UTC

juddi git commit: JUDDI-899 adding test cases for this issue. It appears to be a non-issue. JUDDI-881 adding additional checks to ensure correct operation in openjpa and hibernate

Repository: juddi
Updated Branches:
  refs/heads/master ad8ecf462 -> 7ccb68295


JUDDI-899 adding test cases for this issue. It appears to be a non-issue.
JUDDI-881 adding additional checks to ensure correct operation in openjpa and hibernate


Project: http://git-wip-us.apache.org/repos/asf/juddi/repo
Commit: http://git-wip-us.apache.org/repos/asf/juddi/commit/7ccb6829
Tree: http://git-wip-us.apache.org/repos/asf/juddi/tree/7ccb6829
Diff: http://git-wip-us.apache.org/repos/asf/juddi/diff/7ccb6829

Branch: refs/heads/master
Commit: 7ccb68295ace2e1ce5bb98f026a3645448c47de3
Parents: ad8ecf4
Author: Alex <al...@apache.org>
Authored: Fri Dec 26 22:18:43 2014 -0500
Committer: Alex <al...@apache.org>
Committed: Fri Dec 26 22:18:43 2014 -0500

----------------------------------------------------------------------
 juddi-core-openjpa/pom.xml                      |  30 ++-
 .../src/test/resources/META-INF/persistence.xml |   2 +-
 .../resources/juddiv3DisabledTModelKeybag.xml   | 200 ++++++++++++++++++
 .../main/java/org/apache/juddi/Registry.java    |   1 +
 .../apache/juddi/api/impl/InquiryHelper.java    |   4 +-
 .../apache/juddi/api/impl/UDDIInquiryImpl.java  |  10 +
 .../java/org/apache/juddi/config/AppConfig.java |   9 +-
 .../impl/API_040_BusinessServiceLoadTest.java   | 205 +++++++++++--------
 .../api/impl/API_050_BindingTemplateTest.java   |  62 +++---
 .../resources/juddiv3DisabledTModelKeybag.xml   | 200 ++++++++++++++++++
 .../org/apache/juddi/v3/tck/TckFindEntity.java  |   2 +-
 11 files changed, 600 insertions(+), 125 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/juddi/blob/7ccb6829/juddi-core-openjpa/pom.xml
----------------------------------------------------------------------
diff --git a/juddi-core-openjpa/pom.xml b/juddi-core-openjpa/pom.xml
index bf5759b..92c2b79 100644
--- a/juddi-core-openjpa/pom.xml
+++ b/juddi-core-openjpa/pom.xml
@@ -68,7 +68,7 @@
 				<plugin>
                   <groupId>org.apache.openjpa</groupId>
                   <artifactId>openjpa-maven-plugin</artifactId>
-                  <version>2.2.1</version>
+                  <version>2.3.0</version>
                   <configuration>
 			         <includes>**/org/apache/juddi/model/*.class</includes>
 			         <addDefaultConstructor>true</addDefaultConstructor>               
@@ -88,10 +88,34 @@
                     <dependency>
                         <groupId>org.apache.openjpa</groupId>
                         <artifactId>openjpa</artifactId>
-                        <version>2.2.1</version>
+                        <version>2.3.0</version>
                     </dependency>
                 </dependencies>
                 </plugin>
+
+                <plugin>
+				    <artifactId>maven-clean-plugin</artifactId>
+				    <version>2.6.1</version>
+				    <configuration>
+				      <filesets>
+				        <fileset>
+				          <directory>src/main/java</directory>
+				          <includes>
+				            <include>**/*</include>
+				          </includes>
+				          <followSymlinks>false</followSymlinks>
+				        </fileset>
+				        <fileset>
+				          <directory>src/test/java</directory>
+				          <includes>
+				            <include>**/*</include>
+				          </includes>
+				          <followSymlinks>false</followSymlinks>
+				        </fileset>
+				      </filesets>
+				    </configuration>
+				  </plugin>
+
 		</plugins>
 	</build>
 	<dependencies>
@@ -123,7 +147,7 @@
                 <dependency>
                     <groupId>org.apache.openjpa</groupId>
                     <artifactId>openjpa</artifactId>
-                    <version>2.2.1</version>
+                    <version>2.3.0</version>
                 </dependency>
 				<dependency>
 				    <groupId>org.apache.geronimo.specs</groupId>

http://git-wip-us.apache.org/repos/asf/juddi/blob/7ccb6829/juddi-core-openjpa/src/test/resources/META-INF/persistence.xml
----------------------------------------------------------------------
diff --git a/juddi-core-openjpa/src/test/resources/META-INF/persistence.xml b/juddi-core-openjpa/src/test/resources/META-INF/persistence.xml
index f42c65f..92d777f 100644
--- a/juddi-core-openjpa/src/test/resources/META-INF/persistence.xml
+++ b/juddi-core-openjpa/src/test/resources/META-INF/persistence.xml
@@ -93,7 +93,7 @@
       <property name="openjpa.ConnectionURL" value="jdbc:derby:memory:juddi-derby-test-db;create=true"/>
       <property name="openjpa.ConnectionUserName" value=""/>
       <property name="openjpa.ConnectionPassword" value=""/>
-      
+      <!--<property name="openjpa.Log" value="DefaultLevel=WARN, Runtime=INFO, Tool=INFO, SQL=TRACE"/>-->
       
       <!--  mysql connection properties
       <property name="openjpa.ConnectionURL" value="jdbc:mysql://localhost:3306/juddi"/>

http://git-wip-us.apache.org/repos/asf/juddi/blob/7ccb6829/juddi-core-openjpa/src/test/resources/juddiv3DisabledTModelKeybag.xml
----------------------------------------------------------------------
diff --git a/juddi-core-openjpa/src/test/resources/juddiv3DisabledTModelKeybag.xml b/juddi-core-openjpa/src/test/resources/juddiv3DisabledTModelKeybag.xml
new file mode 100644
index 0000000..879933c
--- /dev/null
+++ b/juddi-core-openjpa/src/test/resources/juddiv3DisabledTModelKeybag.xml
@@ -0,0 +1,200 @@
+<?xml version="1.0" encoding="UTF-8"  ?>
+<!--
+################################################################
+#                 jUDDI-v3.0 configuration.                    #
+################################################################
+# Note that the property settings in this                      #
+# file can be overriden by system parameters                   #
+#                                                              #
+################################################################
+-->
+<config>
+	<juddi>
+		<!-- The ${juddi.server.baseurl} token can be referenced in accessPoints and will be resolved at runtime. -->
+		<server>
+			<baseurl>http://localhost:8080/juddiv3</baseurl>
+			<baseurlsecure>https://localhost:8443/juddiv3</baseurlsecure>
+		</server>
+		<!-- The node Id must be unique when setup in a cluster of UDDI servers implementing the replication API
+			don't worry, jUDDI doesn't implement it right now, but it may come in the future -->
+		<nodeId>uddi:juddi.apache.org:node1</nodeId>
+		<!-- The key of the root business that all of the UDDI services are registered in, as defined in the install_data -->
+		<root>
+			<!-- this is the 'root' username, or owner of the node -->
+			<publisher>root</publisher>
+			<!-- The key of the root business that all of the UDDI services are registered in, as defined in the install_data -->
+			<businessId>uddi:juddi.apache.org:businesses-asf</businessId>
+			<partition>uddi:juddi.apache.org</partition>
+		</root>
+		<seed>
+			<always>false</always>
+		</seed>
+
+		<!-- Name of the persistence unit to use (the default, "juddiDatabase" refers to the unit compiled into the juddi library)-->
+		<persistenceunit>
+			<name>juddiDatabase</name>
+		</persistenceunit>
+
+		<!-- Check-the-time-stamp-on-this-file Interval in milli seconds  -->
+		<configuration>
+			<reload>
+				<delay>2000</delay>
+			</reload>
+		</configuration>
+		<!--Default locale-->
+		<locale>en_US</locale>
+
+		<!--The UDDI Operator Contact Email Address-->
+		<operatorEmailAddress>admin@local.localhost</operatorEmailAddress>
+
+		<!-- The maximum name size and maximum number of name elements allows in several of the FindXxxx and SaveXxxx UDDI functions.-->
+		<maxNameLength>255</maxNameLength>
+		<maxNameElementsAllowed>5</maxNameElementsAllowed>
+
+
+		<!-- The maximum number of rows returned in a find_* operation.  Each call can set this independently, but this property defines a global maximum.-->
+		<maxRows>1000</maxRows>
+		<!-- The maximum number of "IN" clause parameters.  Some RDMBS limit the number of parameters allowed in a SQL "IN" clause.-->
+		<maxInClause>1000</maxInClause>
+
+		<!-- The maximum number of UDDI artifacts allowed per publisher. A value of '-1' indicates any  number of artifacts is valid (These values can be overridden at the individual publisher level).-->
+		<maxBusinessesPerPublisher>100</maxBusinessesPerPublisher>
+		<maxServicesPerBusiness>100</maxServicesPerBusiness>
+		<maxBindingsPerService>100</maxBindingsPerService>
+		<maxTModelsPerPublisher>100</maxTModelsPerPublisher>
+
+		<!-- Days before a transfer request expires-->
+		<transfer>
+			<expiration>
+				<days>3</days>
+			</expiration>
+		</transfer>
+
+		<!-- Days before a subscription expires-->
+		<subscription>
+			<expiration>
+				<days>30</days>
+			</expiration>
+
+			<!-- Minutes before a "chunked" subscription call expires-->
+			<chunkexpiration>
+				<minutes>5</minutes>
+			</chunkexpiration>
+
+			<!--Since 3.1.5 the maxium ammount of returned subscription entities allowed-->
+			<maxentities>1000</maxentities>
+		</subscription>
+
+		<!-- jUDDI UUIDGen implementation to use-->
+		<uuidgen>org.apache.juddi.uuidgen.DefaultUUIDGen</uuidgen>
+
+		<!-- jUDDI Cryptor implementation to use-->
+		<cryptor>org.apache.juddi.v3.client.cryptor.DefaultCryptor</cryptor>
+
+		<!-- jUDDI Key Generator to use-->
+		<keygenerator>org.apache.juddi.keygen.DefaultKeyGenerator</keygenerator>
+
+		<notification>
+			<!-- Specifies the interval at which the notification timer triggers-->
+			<interval>5000</interval>
+			<!-- Specifies the amount of time to wait before the notification timer initially fires-->
+			<start>
+				<buffer>0</buffer>
+			</start>
+			<acceptableLagtime>1000</acceptableLagtime>
+			<maxTries>3</maxTries>
+			<!-- 10 minutes -->
+			<maxTriesResetInterval>600000</maxTriesResetInterval>
+			<sendAuthTokenWithResultList>false</sendAuthTokenWithResultList>
+		</notification>
+		<!-- All Authentication related settings -->
+		<auth>
+			<!-- Specifies whether the inquiry API requires authentication, all other APIs require authN-->
+			<Inquiry>false</Inquiry>
+
+			<!-- When using file based authentication, this is the filename to use 
+			<usersfile>juddi-users.xml</usersfile>-->
+			<!-- jUDDI Authentication module to use-->
+			<authenticator>
+				<!-- build in Authenticators:
+				org.apache.juddi.v3.auth.JUDDIAuthenticator - no authentication
+				LDAP Based
+				org.apache.juddi.v3.auth.LdapSimpleAuthenticator - use LDAP
+				org.apache.juddi.v3.auth.LdapExpandedAuthenticator - use LDAP
+				
+				File based, see usersfile
+				org.apache.juddi.v3.auth.XMLDocAuthenticator - XML doc, clear text
+				org.apache.juddi.v3.auth.CryptedXMLDocAuthenticator - XML doc, encrypted
+				org.apache.juddi.v3.auth.MD5XMLDocAuthenticator - XML doc, Hashed
+                                
+                                See also, the Jboss Authenticator
+				-->
+				<class>org.apache.juddi.v3.auth.JUDDIAuthenticator</class>
+				<!-- other settings (mostly used by Ldap based auth mods
+				url
+				initialcontext
+				style
+				ldapexp
+				-->
+			</authenticator>
+
+			<token>
+				<!-- Time in minutes to expire tokes after inactivity-->
+				<Timeout>15</Timeout>
+				<!-- As of 3.1.5 Duration of time for tokens to expire, regardless of inactivity -->
+				<Expiration>15</Expiration>
+				<!-- As of 3.2, when set to true, tokens can only be used from the same IP address they were issued to -->
+				<enforceSameIPRule>true</enforceSameIPRule>
+			</token>
+		</auth>
+
+
+
+
+		<validation>
+			<!-- As of 3.1.5 This setting will force referential integrity for all tModels (except keyGenerators), category bags, bindingTemplate/AccessPoint/hostingRedirector (referencing another host), tModelinstanceparms and anything else that references a KeyName default value is true.  set to false for backwards compatibility or for a more lax registry-->
+			<enforceReferentialIntegrity>true</enforceReferentialIntegrity>
+		</validation>
+
+		<!--As of 3.1.5 Email delivery options for subscription API functions-->
+		<mail>
+			<smtp>
+				<!--The Operator’s Email address
+				<from>admin@local.localhost</from>-->
+
+				<!--the hostname of the SMTP server
+				<host>localhost</host>-->
+
+				<!--The portname of the SMTP server
+				<port>25</port>-->
+
+				<!--If set, specifies the name of a class that implements the javax.net.SocketFactory interface. This class will be used to create SMTP sockets.-->
+				<socketFactory>
+					<!--<class></class>-->
+
+					<!--If set to true, failure to create a socket using the specified socket factory class will cause the socket to be created using the java.net.Socket class. Defaults to true.
+					<fallback>true</fallback>-->
+					<!--Specifies the port to connect to when using the specified socket factory. If not set, the default port will be used.
+					<port>25</port>-->
+				</socketFactory>
+				<!--if true, enables the use of the STARTTLS command (if supported by the server) to switch the connection to a TLS-protected connection before issuing any login commands. Note that an appropriate trust store must configured so that the client will trust the server’s certificate. Defaults to false.
+				<starttls>
+					<enabled>false</enabled>
+				</starttls>-->
+
+				<!--If true, attempt to authenticate the user using the AUTH command. Defaults to false.
+				<auth>false</auth>-->
+
+				<!--Username used to authenticate to the SMTP server used only if mail.smtp.auth is true
+				<user>user</user>-->
+
+				<!--Password used to authenticate to the SMTP server, used only if mail.smtp.auth is true
+				<password encrypted="false">pass</password>-->
+			</smtp>
+		</mail>
+                
+                <preformance>
+                    <enableFindBusinessTModelBagFiltering>false</enableFindBusinessTModelBagFiltering>
+                </preformance>
+	</juddi>
+</config>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/juddi/blob/7ccb6829/juddi-core/src/main/java/org/apache/juddi/Registry.java
----------------------------------------------------------------------
diff --git a/juddi-core/src/main/java/org/apache/juddi/Registry.java b/juddi-core/src/main/java/org/apache/juddi/Registry.java
index 60477ef..eaaff53 100644
--- a/juddi-core/src/main/java/org/apache/juddi/Registry.java
+++ b/juddi-core/src/main/java/org/apache/juddi/Registry.java
@@ -81,6 +81,7 @@ public class Registry {
                         log.info("Starting jUDDI registry...");
                         registry = new Registry();
                         replicationNotifier = new ReplicationNotifier();
+                        AppConfig.triggerReload();
                         if (AppConfig.getConfiguration().getBoolean(Property.JUDDI_SUBSCRIPTION_NOTIFICATION, true)) {
                                 subscriptionNotifier = new SubscriptionNotifier();
                         }

http://git-wip-us.apache.org/repos/asf/juddi/blob/7ccb6829/juddi-core/src/main/java/org/apache/juddi/api/impl/InquiryHelper.java
----------------------------------------------------------------------
diff --git a/juddi-core/src/main/java/org/apache/juddi/api/impl/InquiryHelper.java b/juddi-core/src/main/java/org/apache/juddi/api/impl/InquiryHelper.java
index 90e4eb8..1b3b9b9 100644
--- a/juddi-core/src/main/java/org/apache/juddi/api/impl/InquiryHelper.java
+++ b/juddi-core/src/main/java/org/apache/juddi/api/impl/InquiryHelper.java
@@ -234,11 +234,13 @@ public class InquiryHelper {
                 
                 boolean enabled = true;
                 try {
-                        AppConfig.getConfiguration().getBoolean(Property.JUDDI_ENABLE_FIND_BUSINESS_TMODEL_BAG_FILTERING, true);
+                        //AppConfig.reloadConfig();
+                       enabled= AppConfig.getConfiguration().getBoolean(Property.JUDDI_ENABLE_FIND_BUSINESS_TMODEL_BAG_FILTERING, true);
                 } catch (ConfigurationException ex) {
                         logger.error(ex);
                 }
                 if (enabled) {
+                        logger.info("FindBusiness by tModelBag is enabled! Loaded from " + AppConfig.getConfigFileURL());
                         List<?> serviceResults = null;
                         for (int i = 0; i < queryResults.size(); i++) {
                                 org.apache.juddi.model.BusinessEntity be = (org.apache.juddi.model.BusinessEntity) queryResults.get(i);

http://git-wip-us.apache.org/repos/asf/juddi/blob/7ccb6829/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIInquiryImpl.java
----------------------------------------------------------------------
diff --git a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIInquiryImpl.java b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIInquiryImpl.java
index c043298..2f47e43 100644
--- a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIInquiryImpl.java
+++ b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIInquiryImpl.java
@@ -20,6 +20,8 @@ package org.apache.juddi.api.impl;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 import javax.jws.WebService;
 import javax.persistence.EntityManager;
 import javax.persistence.EntityTransaction;
@@ -190,6 +192,14 @@ public class UDDIInquiryImpl extends AuthenticatedService implements UDDIInquiry
 		EntityManager em = PersistenceManager.getEntityManager();
 		EntityTransaction tx = em.getTransaction();
 		try {
+                        try {
+                                //AppConfig.reloadConfig();
+                                logger.info("FindBusiness with tModel bag filtering is enabled: " +
+                                        AppConfig.getConfiguration().getBoolean(Property.JUDDI_ENABLE_FIND_BUSINESS_TMODEL_BAG_FILTERING,true)
+                                + " loaded from " + AppConfig.getConfigFileURL());
+                        } catch (ConfigurationException ex) {
+                                ex.printStackTrace();
+                        }
 			tx.begin();
 
 			if (isAuthenticated())

http://git-wip-us.apache.org/repos/asf/juddi/blob/7ccb6829/juddi-core/src/main/java/org/apache/juddi/config/AppConfig.java
----------------------------------------------------------------------
diff --git a/juddi-core/src/main/java/org/apache/juddi/config/AppConfig.java b/juddi-core/src/main/java/org/apache/juddi/config/AppConfig.java
index fcfaeaf..47c11a9 100644
--- a/juddi-core/src/main/java/org/apache/juddi/config/AppConfig.java
+++ b/juddi-core/src/main/java/org/apache/juddi/config/AppConfig.java
@@ -21,8 +21,6 @@ import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.List;
 import java.util.Properties;
-import java.util.logging.Level;
-import java.util.logging.Logger;
 
 import javax.persistence.EntityManager;
 import javax.persistence.EntityTransaction;
@@ -31,7 +29,6 @@ import org.apache.commons.configuration.CompositeConfiguration;
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.MapConfiguration;
-import org.apache.commons.configuration.PropertiesConfiguration;
 import org.apache.commons.configuration.SystemConfiguration;
 import org.apache.commons.configuration.XMLConfiguration;
 import org.apache.commons.configuration.reloading.FileChangedReloadingStrategy;
@@ -88,7 +85,7 @@ public class AppConfig
 	}
 	/**
 	 * Does the actual work of reading the configuration from System
-	 * Properties and/or juddiv3.properties file. When the juddiv3.properties
+	 * Properties and/or juddiv3.xml file. When the juddiv3.xml
 	 * file is updated the file will be reloaded. By default the reloadDelay is
 	 * set to 1 second to prevent excessive date stamp checking.
 	 */
@@ -249,6 +246,10 @@ public class AppConfig
 		getInstance().loadConfiguration();
 		Registry.start();
 	}
+        
+        public static void triggerReload() throws ConfigurationException{
+                getInstance().loadConfiguration();
+        }
 	/**
 	 * The object from which property values can be obtained.
 	 * @return the commons Configuration interface

http://git-wip-us.apache.org/repos/asf/juddi/blob/7ccb6829/juddi-core/src/test/java/org/apache/juddi/api/impl/API_040_BusinessServiceLoadTest.java
----------------------------------------------------------------------
diff --git a/juddi-core/src/test/java/org/apache/juddi/api/impl/API_040_BusinessServiceLoadTest.java b/juddi-core/src/test/java/org/apache/juddi/api/impl/API_040_BusinessServiceLoadTest.java
index 9062a79..15aef45 100644
--- a/juddi-core/src/test/java/org/apache/juddi/api/impl/API_040_BusinessServiceLoadTest.java
+++ b/juddi-core/src/test/java/org/apache/juddi/api/impl/API_040_BusinessServiceLoadTest.java
@@ -14,6 +14,7 @@
  */
 package org.apache.juddi.api.impl;
 
+import java.io.File;
 import java.rmi.RemoteException;
 
 import org.apache.commons.configuration.ConfigurationException;
@@ -21,6 +22,7 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.juddi.Registry;
 import org.apache.juddi.config.AppConfig;
+import static org.apache.juddi.config.AppConfig.JUDDI_CONFIGURATION_FILE_SYSTEM_PROPERTY;
 import org.apache.juddi.config.Property;
 import org.apache.juddi.query.util.FindQualifiers;
 import org.apache.juddi.v3.tck.TckBusiness;
@@ -43,103 +45,126 @@ import org.uddi.v3_service.UDDISecurityPortType;
 
 /**
  * @author <a href="mailto:kstam@apache.org">Kurt T Stam</a>
+ * @author <a href="mailto:alexoree@apache.org">Alex O'Ree</a>
  */
-public class API_040_BusinessServiceLoadTest
-{	
-	private static Log logger                        = LogFactory.getLog(API_040_BusinessServiceTest.class);
-	
-	private static API_010_PublisherTest api010      = new API_010_PublisherTest();
-	protected static TckTModel tckTModel               = new TckTModel(new UDDIPublicationImpl(), new UDDIInquiryImpl());
-	protected static TckBusiness tckBusiness           = new TckBusiness(new UDDIPublicationImpl(), new UDDIInquiryImpl());
-	protected static TckBusinessService tckBusinessService  = new TckBusinessService(new UDDIPublicationImpl(), new UDDIInquiryImpl());
-	private static UDDIInquiryImpl inquiry             = new UDDIInquiryImpl();
-	
-	int numberOfBusinesses=100;
-	int numberOfServices=100;
-	
-	protected static String authInfoJoe                = null;
-	protected static String authInfoSam                = null;
-	
-	@BeforeClass
-	public static void setup() throws ConfigurationException {
-		Registry.start();
+public class API_040_BusinessServiceLoadTest {
+
+        private static Log logger = LogFactory.getLog(API_040_BusinessServiceTest.class);
+
+        private static API_010_PublisherTest api010 = new API_010_PublisherTest();
+        protected static TckTModel tckTModel = new TckTModel(new UDDIPublicationImpl(), new UDDIInquiryImpl());
+        protected static TckBusiness tckBusiness = new TckBusiness(new UDDIPublicationImpl(), new UDDIInquiryImpl());
+        protected static TckBusinessService tckBusinessService = new TckBusinessService(new UDDIPublicationImpl(), new UDDIInquiryImpl());
+        private static UDDIInquiryImpl inquiry = new UDDIInquiryImpl();
+
+        int numberOfBusinesses = 100;
+        int numberOfServices = 100;
+
+        protected static String authInfoJoe = null;
+        protected static String authInfoSam = null;
+
+        @BeforeClass
+        public static void setup() throws ConfigurationException {
+                File f = new File(".");
+                System.out.println("Current working dir is " + f.getAbsolutePath());
+                System.setProperty(JUDDI_CONFIGURATION_FILE_SYSTEM_PROPERTY, f.getAbsolutePath()+"/src/test/resources/juddiv3DisabledTModelKeybag.xml");
+                Registry.start();
                 logger.info("API_040_BusinessServiceTestPerformance");
-		logger.debug("Getting auth tokens..");
-		try {
-			api010.saveJoePublisher();
-			UDDISecurityPortType security      = new UDDISecurityImpl();
-			authInfoJoe = TckSecurity.getAuthToken(security, TckPublisher.getJoePublisherId(),  TckPublisher.getJoePassword());
-			String authInfoUDDI  = TckSecurity.getAuthToken(security, TckPublisher.getUDDIPublisherId(),  TckPublisher.getUDDIPassword());
-			tckTModel.saveUDDIPublisherTmodel(authInfoUDDI);
-			tckTModel.saveTModels(authInfoUDDI, TckTModel.TMODELS_XML);
-		} catch (RemoteException e) {
-			logger.error(e.getMessage(), e);
-			Assert.fail("Could not obtain authInfo token.");
-		}
-	}
-        
+                logger.debug("Getting auth tokens..");
+                try {
+                        api010.saveJoePublisher();
+                        UDDISecurityPortType security = new UDDISecurityImpl();
+                        authInfoJoe = TckSecurity.getAuthToken(security, TckPublisher.getJoePublisherId(), TckPublisher.getJoePassword());
+                        String authInfoUDDI = TckSecurity.getAuthToken(security, TckPublisher.getUDDIPublisherId(), TckPublisher.getUDDIPassword());
+                        tckTModel.saveUDDIPublisherTmodel(authInfoUDDI);
+                        tckTModel.saveTModels(authInfoUDDI, TckTModel.TMODELS_XML);
+                } catch (RemoteException e) {
+                        logger.error(e.getMessage(), e);
+                        Assert.fail("Could not obtain authInfo token.");
+                }
+        }
+
         @AfterClass
-        public static void shutdown() throws ConfigurationException{
+        public static void shutdown() throws ConfigurationException {
                 tckTModel.deleteCreatedTModels(authInfoJoe);
                 Registry.stop();
+                System.clearProperty(JUDDI_CONFIGURATION_FILE_SYSTEM_PROPERTY);
         }
-        
-	@Test
+
+        /**
+         * loads the database with 100x100 services, runs a basic query, then
+         * deletes the records
+         *
+         * @throws DispositionReportFaultMessage
+         * @throws ConfigurationException
+         */
+        @Test
         //@Ignore
-	public void find20Businesses() throws DispositionReportFaultMessage, ConfigurationException {
+        public void find20Businesses() throws DispositionReportFaultMessage, ConfigurationException {
                 //disable TModelBag filtering
-                logger.info("Disabling findBusiness tModelBag filtering....");
-                AppConfig.getConfiguration().setProperty(Property.JUDDI_ENABLE_FIND_BUSINESS_TMODEL_BAG_FILTERING, false);
-                logger.info("findBusiness tModelBag filtering is enabled: " + 
-                AppConfig.getConfiguration().getProperty(Property.JUDDI_ENABLE_FIND_BUSINESS_TMODEL_BAG_FILTERING));
-                tckTModel.saveJoePublisherTmodel(authInfoJoe);
-		long startSave = System.currentTimeMillis();
-		//loading up 100 businesses, with a 100 services each
-		tckBusiness.saveJoePublisherBusinesses(authInfoJoe, numberOfBusinesses);
-		for (int i=0; i<numberOfBusinesses; i++) {
-			tckBusinessService.saveJoePublisherServices(authInfoJoe, i, numberOfServices);
-		}
-		long saveDuration = System.currentTimeMillis() - startSave;
-		System.out.println("Saved " + numberOfBusinesses + " businesses with each " + numberOfServices + " services in " + saveDuration + "ms");
-		System.out.println("Tiggering findBusiness query...");
-		//find 20 businesses by name
-		FindBusiness fb = new FindBusiness();
-		org.uddi.api_v3.FindQualifiers apiFq = new org.uddi.api_v3.FindQualifiers();
-		apiFq.getFindQualifier().add(FindQualifiers.APPROXIMATE_MATCH);
-		apiFq.getFindQualifier().add(FindQualifiers.CASE_INSENSITIVE_MATCH);
-		fb.setFindQualifiers(apiFq);
-		Name name = new Name();
-		name.setValue("John%");
-		fb.getName().add(name);
-		fb.setMaxRows(20);
-		long startFind = System.currentTimeMillis();
-		BusinessList result = inquiry.findBusiness(fb);
-		long findDuration = System.currentTimeMillis() - startFind;
-		System.out.println("Find 20 businesses took "  +  findDuration + "ms. Size=" + result.getBusinessInfos().getBusinessInfo().size());
-		// it takes less then 1 second, make sure it stays faster then 5 seconds
-		//Assert.assertTrue(findDuration < 5000);
-		System.out.println("Tiggering findService query...");		
-		FindService fs = new FindService();
-		fs.setFindQualifiers(apiFq);
-		name.setValue("Service One%");
-		fs.getName().add(name);
-		startFind = System.currentTimeMillis();
-		//this will match ALL services (100 * 100 =) 10,000 services
-		int all = numberOfBusinesses * numberOfServices;
-		System.out.println("Matching " + all+  " services");
-		ServiceList serviceList = inquiry.findService(fs);
-		findDuration = System.currentTimeMillis() - startFind;
-		System.out.println("Find " + all + " services took "  +  findDuration + "ms. Size=" + serviceList.getServiceInfos().getServiceInfo().size());
+                try {
+                        //logger.info("Disabling findBusiness tModelBag filtering....");
+                        //AppConfig.getConfiguration().setProperty(Property.JUDDI_ENABLE_FIND_BUSINESS_TMODEL_BAG_FILTERING, false);
+                        //logger.info("findBusiness tModelBag filtering is enabled: "
+                        //        + AppConfig.getConfiguration().getProperty(Property.JUDDI_ENABLE_FIND_BUSINESS_TMODEL_BAG_FILTERING));
+                        System.setProperty(JUDDI_CONFIGURATION_FILE_SYSTEM_PROPERTY, "/src/test/resources/juddiv3DisabledTModelKeybag.xml");
+                        tckTModel.saveJoePublisherTmodel(authInfoJoe);
+                        long startSave = System.currentTimeMillis();
+                        //loading up 100 businesses, with a 100 services each
+                        tckBusiness.saveJoePublisherBusinesses(authInfoJoe, numberOfBusinesses);
+                        for (int i = 0; i < numberOfBusinesses; i++) {
+                                tckBusinessService.saveJoePublisherServices(authInfoJoe, i, numberOfServices);
+                        }
+                        long saveDuration = System.currentTimeMillis() - startSave;
+                        System.out.println("Saved " + numberOfBusinesses + " businesses with each " + numberOfServices + " services in " + saveDuration + "ms");
+                        System.out.println("Tiggering findBusiness query...");
+                        //find 20 businesses by name
+                        FindBusiness fb = new FindBusiness();
+                        org.uddi.api_v3.FindQualifiers apiFq = new org.uddi.api_v3.FindQualifiers();
+                        apiFq.getFindQualifier().add(FindQualifiers.APPROXIMATE_MATCH);
+                        apiFq.getFindQualifier().add(FindQualifiers.CASE_INSENSITIVE_MATCH);
+                        fb.setFindQualifiers(apiFq);
+                        Name name = new Name();
+                        name.setValue("John%");
+                        fb.getName().add(name);
+                        fb.setMaxRows(20);
+                        long startFind = System.currentTimeMillis();
+                        BusinessList result = inquiry.findBusiness(fb);
+                        long findDuration = System.currentTimeMillis() - startFind;
+                        System.out.println("Find 20 businesses took " + findDuration + "ms. Size=" + result.getBusinessInfos().getBusinessInfo().size());
+                        // it takes less then 1 second, make sure it stays faster then 5 seconds
+                        if (findDuration > 20000) {
+                                Assert.fail("This operation took too long to process");
+                        }
+                        //Assert.assertTrue(findDuration < 5000);
+                        System.out.println("Tiggering findService query...");
+                        FindService fs = new FindService();
+                        fs.setFindQualifiers(apiFq);
+                        name.setValue("Service One%");
+                        fs.getName().add(name);
+                        startFind = System.currentTimeMillis();
+                        //this will match ALL services (100 * 100 =) 10,000 services
+                        int all = numberOfBusinesses * numberOfServices;
+                        System.out.println("Matching " + all + " services");
+                        ServiceList serviceList = inquiry.findService(fs);
+                        findDuration = System.currentTimeMillis() - startFind;
+                        System.out.println("Find " + all + " services took " + findDuration + "ms. Size=" + serviceList.getServiceInfos().getServiceInfo().size());
+                        if (findDuration > 20000) {
+                                Assert.fail("This operation took too long to process");
+                        }
+
+                } finally {
+                        System.out.println("Tiggering deletion...");
+                        long startDelete = System.currentTimeMillis();
+                        for (int i = 0; i < numberOfBusinesses; i++) {
+                                tckBusinessService.deleteJoePublisherServices(authInfoJoe, i, numberOfServices);
+                        }
+                        long deleteDuration = System.currentTimeMillis() - startDelete;
+                        System.out.println("Delete all business and services in " + deleteDuration + "ms");
+                        tckBusiness.deleteJoePublisherBusinesses(authInfoJoe, numberOfBusinesses);
+                        tckTModel.deleteJoePublisherTmodel(authInfoJoe);
+                }
+
+        }
 
-                System.out.println("Tiggering deletion...");
-		long startDelete = System.currentTimeMillis();
-		for (int i=0; i<numberOfBusinesses; i++) {
-			tckBusinessService.deleteJoePublisherServices(authInfoJoe, i, numberOfServices);
-		}
-		long deleteDuration = System.currentTimeMillis() - startDelete;
-		System.out.println("Delete all business and services in " + deleteDuration + "ms");
-		tckBusiness.deleteJoePublisherBusinesses(authInfoJoe, numberOfBusinesses);
-		tckTModel.deleteJoePublisherTmodel(authInfoJoe);
-	}
-	
 }

http://git-wip-us.apache.org/repos/asf/juddi/blob/7ccb6829/juddi-core/src/test/java/org/apache/juddi/api/impl/API_050_BindingTemplateTest.java
----------------------------------------------------------------------
diff --git a/juddi-core/src/test/java/org/apache/juddi/api/impl/API_050_BindingTemplateTest.java b/juddi-core/src/test/java/org/apache/juddi/api/impl/API_050_BindingTemplateTest.java
index f8c679d..072c188 100644
--- a/juddi-core/src/test/java/org/apache/juddi/api/impl/API_050_BindingTemplateTest.java
+++ b/juddi-core/src/test/java/org/apache/juddi/api/impl/API_050_BindingTemplateTest.java
@@ -150,43 +150,55 @@ public class API_050_BindingTemplateTest {
          *
          * @throws Exception
          */
-        @Test
-        //@Ignore
+        @Test 
         public void testJUDDI_899() throws Exception {
-                UDDIInquiryImpl inquiry = new UDDIInquiryImpl();
+                try {
+                        tckTModel.saveJoePublisherTmodel(authInfoJoe);
+                        tckBusiness.saveJoePublisherBusiness(authInfoJoe);
+                        tckBusinessService.saveJoePublisherService(authInfoJoe);
+                        tckBindingTemplate.saveJoePublisherBinding(authInfoJoe);
+                        
+                        UDDIInquiryImpl inquiry = new UDDIInquiryImpl();
 
-                FindBinding fb = new FindBinding();
-                fb.setAuthInfo(authInfoJoe);
+                        FindBinding fb = new FindBinding();
+                        fb.setAuthInfo(authInfoJoe);
 
-                fb.setTModelBag(new TModelBag());
-                //this is stored in joe's binding template
-                fb.getTModelBag().getTModelKey().add("uddi:uddi.org:protocol:serverauthenticatedssl3");
+                        fb.setTModelBag(new TModelBag());
+                        //this is stored in joe's binding template 
+                        fb.getTModelBag().getTModelKey().add("uddi:uddi.org:protocol:serverauthenticatedssl3");
+                        logger.info("testJUDDI_899 searching...");
+                        BindingDetail findBinding = inquiry.findBinding(fb);
+                        logger.info("testJUDDI_899 searching complete.");
+                        Assert.assertNotNull(findBinding);
+                        Assert.assertNotNull(findBinding.getBindingTemplate());
+                        Assert.assertFalse(findBinding.getBindingTemplate().isEmpty());
 
-                BindingDetail findBinding = inquiry.findBinding(fb);
-                Assert.assertNotNull(findBinding);
-                Assert.assertNotNull(findBinding.getBindingTemplate());
-                Assert.assertFalse(findBinding.getBindingTemplate().isEmpty());
-           
                         for (int i = 0; i < findBinding.getBindingTemplate().size(); i++) {
                                 if (findBinding.getBindingTemplate().get(i).getBindingKey().equals(TckBindingTemplate.JOE_BINDING_KEY)) {
                                         return;
                                 }
                         }
-                        
-              /*  if (findBinding.isTruncated()==null) {
-                        findBinding.setTruncated(false);
+
+                        Assert.fail("Binding wasn't returned");
+                } finally {
+                        tckBusinessService.deleteJoePublisherService(authInfoJoe);
+                        tckBusiness.deleteJoePublisherBusiness(authInfoJoe);
+                        tckTModel.deleteJoePublisherTmodel(authInfoJoe);
                 }
-                //support for paging
-                while (!findBinding.isTruncated() && !findBinding.getBindingTemplate().isEmpty()) {
+                /*  if (findBinding.isTruncated()==null) {
+                 findBinding.setTruncated(false);
+                 }
+                 //support for paging
+                 while (!findBinding.isTruncated() && !findBinding.getBindingTemplate().isEmpty()) {
                        
-                        findBinding = inquiry.findBinding(fb);
-                        Assert.assertNotNull(findBinding);
+                 findBinding = inquiry.findBinding(fb);
+                 Assert.assertNotNull(findBinding);
                         
-                         if (findBinding.isTruncated()) {
-                        findBinding.setTruncated(false);
-                }
-                }
+                 if (findBinding.isTruncated()) {
+                 findBinding.setTruncated(false);
+                 }
+                 }
 
-                Assert.fail("The expected service wasn't returned");*/
+                 Assert.fail("The expected service wasn't returned");*/
         }
 }

http://git-wip-us.apache.org/repos/asf/juddi/blob/7ccb6829/juddi-core/src/test/resources/juddiv3DisabledTModelKeybag.xml
----------------------------------------------------------------------
diff --git a/juddi-core/src/test/resources/juddiv3DisabledTModelKeybag.xml b/juddi-core/src/test/resources/juddiv3DisabledTModelKeybag.xml
new file mode 100644
index 0000000..ca17631
--- /dev/null
+++ b/juddi-core/src/test/resources/juddiv3DisabledTModelKeybag.xml
@@ -0,0 +1,200 @@
+<?xml version="1.0" encoding="UTF-8"  ?>
+<!--
+################################################################
+#                 jUDDI-v3.0 configuration.                    #
+################################################################
+# Note that the property settings in this                      #
+# file can be overriden by system parameters                   #
+#                                                              #
+################################################################
+-->
+<config>
+	<juddi>
+		<!-- The ${juddi.server.baseurl} token can be referenced in accessPoints and will be resolved at runtime. -->
+		<server>
+			<baseurl>http://localhost:8080/juddiv3</baseurl>
+			<baseurlsecure>https://localhost:8443/juddiv3</baseurlsecure>
+		</server>
+		<!-- The node Id must be unique when setup in a cluster of UDDI servers implementing the replication API
+			don't worry, jUDDI doesn't implement it right now, but it may come in the future -->
+		<nodeId>uddi:juddi.apache.org:node1</nodeId>
+		<!-- The key of the root business that all of the UDDI services are registered in, as defined in the install_data -->
+		<root>
+			<!-- this is the 'root' username, or owner of the node -->
+			<publisher>root</publisher>
+			<!-- The key of the root business that all of the UDDI services are registered in, as defined in the install_data -->
+			<businessId>uddi:juddi.apache.org:businesses-asf</businessId>
+			<partition>uddi:juddi.apache.org</partition>
+		</root>
+		<seed>
+			<always>false</always>
+		</seed>
+
+		<!-- Name of the persistence unit to use (the default, "juddiDatabase" refers to the unit compiled into the juddi library)-->
+		<persistenceunit>
+			<name>juddiDatabase</name>
+		</persistenceunit>
+
+		<!-- Check-the-time-stamp-on-this-file Interval in milli seconds  -->
+		<configuration>
+			<reload>
+				<delay>2000</delay>
+			</reload>
+		</configuration>
+		<!--Default locale-->
+		<locale>en_US</locale>
+
+		<!--The UDDI Operator Contact Email Address-->
+		<operatorEmailAddress>admin@local.localhost</operatorEmailAddress>
+
+		<!-- The maximum name size and maximum number of name elements allows in several of the FindXxxx and SaveXxxx UDDI functions.-->
+		<maxNameLength>255</maxNameLength>
+		<maxNameElementsAllowed>5</maxNameElementsAllowed>
+
+
+		<!-- The maximum number of rows returned in a find_* operation.  Each call can set this independently, but this property defines a global maximum.-->
+		<maxRows>1000</maxRows>
+		<!-- The maximum number of "IN" clause parameters.  Some RDMBS limit the number of parameters allowed in a SQL "IN" clause.-->
+		<maxInClause>1000</maxInClause>
+
+		<!-- The maximum number of UDDI artifacts allowed per publisher. A value of '-1' indicates any  number of artifacts is valid (These values can be overridden at the individual publisher level).-->
+		<maxBusinessesPerPublisher>100</maxBusinessesPerPublisher>
+		<maxServicesPerBusiness>100</maxServicesPerBusiness>
+		<maxBindingsPerService>100</maxBindingsPerService>
+		<maxTModelsPerPublisher>100</maxTModelsPerPublisher>
+
+		<!-- Days before a transfer request expires-->
+		<transfer>
+			<expiration>
+				<days>3</days>
+			</expiration>
+		</transfer>
+
+		<!-- Days before a subscription expires-->
+		<subscription>
+			<expiration>
+				<days>30</days>
+			</expiration>
+
+			<!-- Minutes before a "chunked" subscription call expires-->
+			<chunkexpiration>
+				<minutes>5</minutes>
+			</chunkexpiration>
+
+			<!--Since 3.1.5 the maxium ammount of returned subscription entities allowed-->
+			<maxentities>1000</maxentities>
+		</subscription>
+
+		<!-- jUDDI UUIDGen implementation to use-->
+		<uuidgen>org.apache.juddi.uuidgen.DefaultUUIDGen</uuidgen>
+
+		<!-- jUDDI Cryptor implementation to use-->
+		<cryptor>org.apache.juddi.v3.client.cryptor.DefaultCryptor</cryptor>
+
+		<!-- jUDDI Key Generator to use-->
+		<keygenerator>org.apache.juddi.keygen.DefaultKeyGenerator</keygenerator>
+
+		<notification>
+			<!-- Specifies the interval at which the notification timer triggers-->
+			<interval>5000</interval>
+			<!-- Specifies the amount of time to wait before the notification timer initially fires-->
+			<start>
+				<buffer>0</buffer>
+			</start>
+			<acceptableLagtime>1000</acceptableLagtime>
+			<maxTries>3</maxTries>
+			<!-- 10 minutes -->
+			<maxTriesResetInterval>600000</maxTriesResetInterval>
+			<sendAuthTokenWithResultList>false</sendAuthTokenWithResultList>
+		</notification>
+		<!-- All Authentication related settings -->
+		<auth>
+			<!-- Specifies whether the inquiry API requires authentication, all other APIs require authN-->
+			<Inquiry>false</Inquiry>
+
+			<!-- When using file based authentication, this is the filename to use 
+			<usersfile>juddi-users.xml</usersfile>-->
+			<!-- jUDDI Authentication module to use-->
+			<authenticator>
+				<!-- build in Authenticators:
+				org.apache.juddi.v3.auth.JUDDIAuthenticator - no authentication
+				LDAP Based
+				org.apache.juddi.v3.auth.LdapSimpleAuthenticator - use LDAP
+				org.apache.juddi.v3.auth.LdapExpandedAuthenticator - use LDAP
+				
+				File based, see usersfile
+				org.apache.juddi.v3.auth.XMLDocAuthenticator - XML doc, clear text
+				org.apache.juddi.v3.auth.CryptedXMLDocAuthenticator - XML doc, encrypted
+				org.apache.juddi.v3.auth.MD5XMLDocAuthenticator - XML doc, Hashed
+                                
+                                See also, the Jboss Authenticator
+				-->
+				<class>org.apache.juddi.v3.auth.JUDDIAuthenticator</class>
+				<!-- other settings (mostly used by Ldap based auth mods
+				url
+				initialcontext
+				style
+				ldapexp
+				-->
+			</authenticator>
+
+			<token>
+				<!-- Time in minutes to expire tokes after inactivity-->
+				<Timeout>15</Timeout>
+				<!-- As of 3.1.5 Duration of time for tokens to expire, regardless of inactivity -->
+				<Expiration>15</Expiration>
+				<!-- As of 3.2, when set to true, tokens can only be used from the same IP address they were issued to -->
+				<enforceSameIPRule>true</enforceSameIPRule>
+			</token>
+		</auth>
+
+
+
+
+		<validation>
+			<!-- As of 3.1.5 This setting will force referential integrity for all tModels (except keyGenerators), category bags, bindingTemplate/AccessPoint/hostingRedirector (referencing another host), tModelinstanceparms and anything else that references a KeyName default value is true.  set to false for backwards compatibility or for a more lax registry-->
+			<enforceReferentialIntegrity>true</enforceReferentialIntegrity>
+		</validation>
+
+		<!--As of 3.1.5 Email delivery options for subscription API functions-->
+		<mail>
+			<smtp>
+				<!--The Operator’s Email address
+				<from>admin@local.localhost</from>-->
+
+				<!--the hostname of the SMTP server
+				<host>localhost</host>-->
+
+				<!--The portname of the SMTP server
+				<port>25</port>-->
+
+				<!--If set, specifies the name of a class that implements the javax.net.SocketFactory interface. This class will be used to create SMTP sockets.-->
+				<socketFactory>
+					<!--<class></class>-->
+
+					<!--If set to true, failure to create a socket using the specified socket factory class will cause the socket to be created using the java.net.Socket class. Defaults to true.
+					<fallback>true</fallback>-->
+					<!--Specifies the port to connect to when using the specified socket factory. If not set, the default port will be used.
+					<port>25</port>-->
+				</socketFactory>
+				<!--if true, enables the use of the STARTTLS command (if supported by the server) to switch the connection to a TLS-protected connection before issuing any login commands. Note that an appropriate trust store must configured so that the client will trust the server’s certificate. Defaults to false.
+				<starttls>
+					<enabled>false</enabled>
+				</starttls>-->
+
+				<!--If true, attempt to authenticate the user using the AUTH command. Defaults to false.
+				<auth>false</auth>-->
+
+				<!--Username used to authenticate to the SMTP server used only if mail.smtp.auth is true
+				<user>user</user>-->
+
+				<!--Password used to authenticate to the SMTP server, used only if mail.smtp.auth is true
+				<password encrypted="false">pass</password>-->
+			</smtp>
+		</mail>
+                
+                <preformance>
+                    <enableFindBusinessTModelBagFiltering>false</enableFindBusinessTModelBagFiltering>
+                </preformance>
+	</juddi>
+</config>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/juddi/blob/7ccb6829/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckFindEntity.java
----------------------------------------------------------------------
diff --git a/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckFindEntity.java b/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckFindEntity.java
index 97e85ad..fce76e0 100644
--- a/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckFindEntity.java
+++ b/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckFindEntity.java
@@ -149,7 +149,7 @@ public class TckFindEntity
 		}
 		catch(Exception e) {
 			logger.error(e.getMessage(), e);
-			Assert.fail("No exception should be thrown.");
+			Assert.fail("No exception should be thrown." + e.getMessage());
 		}
 	}
 	


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