You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by la...@apache.org on 2012/10/04 18:50:43 UTC
svn commit: r1394155 - in /airavata/trunk/modules:
distribution/src/main/resources/conf/
registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/
registry/airavata-registry-service/ registry/airavata-registry...
Author: lahiru
Date: Thu Oct 4 16:50:42 2012
New Revision: 1394155
URL: http://svn.apache.org/viewvc?rev=1394155&view=rev
Log:
applying AIRAVATA-591.patch and some other improvements
Added:
airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/AiravataRegistryConnectionDataProviderImpl.java
Modified:
airavata/trunk/modules/distribution/src/main/resources/conf/repository.properties
airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentResource.java
airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ProjectResource.java
airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ServiceDescriptorResource.java
airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java
airavata/trunk/modules/registry/airavata-registry-service/pom.xml
airavata/trunk/modules/registry/airavata-registry-service/src/main/java/org/apache/airavata/registry/services/RegistryService.java
airavata/trunk/modules/registry/airavata-registry-service/src/main/java/org/apache/airavata/registry/services/utils/ConnectionPool.java
airavata/trunk/modules/registry/airavata-registry-service/src/main/java/org/apache/airavata/registry/services/utils/JdbcStorage.java
airavata/trunk/modules/xbaya-gui/src/main/resources/repository.properties
Modified: airavata/trunk/modules/distribution/src/main/resources/conf/repository.properties
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/distribution/src/main/resources/conf/repository.properties?rev=1394155&r1=1394154&r2=1394155&view=diff
==============================================================================
--- airavata/trunk/modules/distribution/src/main/resources/conf/repository.properties (original)
+++ airavata/trunk/modules/distribution/src/main/resources/conf/repository.properties Thu Oct 4 16:50:42 2012
@@ -84,10 +84,10 @@ registry.jdbc.user=airavata
registry.jdbc.password=airavata
#for mysql
-registry.jdbc.url=jdbc:mysql://localhost:3306/persistent_data
-registry.jdbc.driver=com.mysql.jdbc.Driver
+#registry.jdbc.url=jdbc:mysql://localhost:3306/persistent_data
+#registry.jdbc.driver=com.mysql.jdbc.Driver
#for derby database
-#registry.jdbc.driver=org.apache.derby.jdbc.ClientDriver
-#registry.jdbc.url=jdbc:derby://localhost:1527/persistent_data;create=true;user=airavata;password=airavata
+registry.jdbc.driver=org.apache.derby.jdbc.ClientDriver
+registry.jdbc.url=jdbc:derby://localhost:1527/persistent_data;create=true;user=airavata;password=airavata
Added: airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/AiravataRegistryConnectionDataProviderImpl.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/AiravataRegistryConnectionDataProviderImpl.java?rev=1394155&view=auto
==============================================================================
--- airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/AiravataRegistryConnectionDataProviderImpl.java (added)
+++ airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/AiravataRegistryConnectionDataProviderImpl.java Thu Oct 4 16:50:42 2012
@@ -0,0 +1,34 @@
+package org.apache.airavata.persistance.registry.jpa.resources;
+
+
+import org.apache.airavata.registry.api.AiravataRegistryConnectionDataProvider;
+import org.apache.airavata.registry.api.AiravataUser;
+import org.apache.airavata.registry.api.Gateway;
+import org.apache.airavata.registry.api.exception.UnknownRegistryConnectionDataException;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.Properties;
+
+public class AiravataRegistryConnectionDataProviderImpl implements AiravataRegistryConnectionDataProvider {
+
+ public static Properties loadProperties(){
+ URL resource = Utils.class.getClassLoader().getResource("repository.properties");
+ Properties properties = new Properties();
+ try {
+ properties.load(resource.openStream());
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return properties;
+ }
+
+
+ public void setIdentity(Gateway gateway, AiravataUser use) {
+ }
+
+
+ public Object getValue(String key) throws UnknownRegistryConnectionDataException {
+ return loadProperties().getProperty(key);
+ }
+}
Modified: airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentResource.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentResource.java?rev=1394155&r1=1394154&r2=1394155&view=diff
==============================================================================
--- airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentResource.java (original)
+++ airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentResource.java Thu Oct 4 16:50:42 2012
@@ -260,7 +260,7 @@ public class ExperimentResource extends
return (ExperimentDataResource) get(ResourceType.EXPERIMENT_DATA, getExpID());
}else{
ExperimentDataResource data = (ExperimentDataResource) create(ResourceType.EXPERIMENT_DATA);
- data.save();
+ data.save();
return data;
}
}
Modified: airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ProjectResource.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ProjectResource.java?rev=1394155&r1=1394154&r2=1394155&view=diff
==============================================================================
--- airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ProjectResource.java (original)
+++ airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ProjectResource.java Thu Oct 4 16:50:42 2012
@@ -72,7 +72,7 @@ public class ProjectResource extends Abs
experimentResource.setWorker(getWorker());
return experimentResource;
} else {
- return null;
+ throw new IllegalArgumentException("Unsupported resource type for project resource.");
}
}
@@ -103,9 +103,9 @@ public class ProjectResource extends Abs
* @return child resource
*/
public Resource get(ResourceType type, Object name) {
- EntityManager em = ResourceUtils.getEntityManager();
- em.getTransaction().begin();
if (type == ResourceType.EXPERIMENT) {
+ EntityManager em = ResourceUtils.getEntityManager();
+ em.getTransaction().begin();
QueryGenerator generator = new QueryGenerator(EXPERIMENT);
generator.setParameter(ExperimentConstants.PROJECT_NAME, name);
generator.setParameter(ExperimentConstants.USERNAME, getWorker().getUser());
@@ -117,8 +117,10 @@ public class ProjectResource extends Abs
em.getTransaction().commit();
em.close();
return experimentResource;
+ }else{
+ throw new IllegalArgumentException("Unsupported resource type for project resource.");
}
- return null;
+
}
/**
@@ -154,9 +156,10 @@ public class ProjectResource extends Abs
*/
public List<Resource> get(ResourceType type) {
List<Resource> resourceList = new ArrayList<Resource>();
- EntityManager em = ResourceUtils.getEntityManager();
- em.getTransaction().begin();
+
if (type == ResourceType.EXPERIMENT) {
+ EntityManager em = ResourceUtils.getEntityManager();
+ em.getTransaction().begin();
QueryGenerator generator = new QueryGenerator(EXPERIMENT);
generator.setParameter(ExperimentConstants.PROJECT_NAME, name);
Query q = generator.selectQuery(em);
@@ -169,9 +172,9 @@ public class ProjectResource extends Abs
resourceList.add(experimentResource);
}
}
+ em.getTransaction().commit();
+ em.close();
}
- em.getTransaction().commit();
- em.close();
return resourceList;
}
Modified: airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ServiceDescriptorResource.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ServiceDescriptorResource.java?rev=1394155&r1=1394154&r2=1394155&view=diff
==============================================================================
--- airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ServiceDescriptorResource.java (original)
+++ airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ServiceDescriptorResource.java Thu Oct 4 16:50:42 2012
@@ -81,7 +81,7 @@ public class ServiceDescriptorResource e
applicationDescriptorResource.setHostDescName(getServiceDescName());
return applicationDescriptorResource;
}
- return null;
+ throw new IllegalArgumentException("Unsupported resource type for service descriptor resource.");
}
public void remove(ResourceType type, Object name) {
Modified: airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java?rev=1394155&r1=1394154&r2=1394155&view=diff
==============================================================================
--- airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java (original)
+++ airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java Thu Oct 4 16:50:42 2012
@@ -21,6 +21,7 @@
package org.apache.airavata.persistance.registry.jpa.resources;
import java.io.IOException;
+import java.net.URI;
import java.net.URL;
import java.util.Properties;
@@ -71,20 +72,60 @@ public class Utils {
public static String getJDBCURL(){
try {
- if (getProvider()!=null){
- return getProvider().getValue(JPAConstants.KEY_JDBC_URL).toString();
- }
+ return getProvider().getValue(JPAConstants.KEY_JDBC_URL).toString();
} catch (UnknownRegistryConnectionDataException e) {
e.printStackTrace();
+ return null;
}
- Properties properties = loadProperties();
- return properties.getProperty(JPAConstants.KEY_JDBC_URL);
+ }
+
+ public static String getHost(){
+ try{
+ String jdbcURL = getJDBCURL();
+ String cleanURI = jdbcURL.substring(5);
+ URI uri = URI.create(cleanURI);
+ return uri.getHost();
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ public static int getPort(){
+ try{
+ String jdbcURL = getJDBCURL();
+ String cleanURI = jdbcURL.substring(5);
+ URI uri = URI.create(cleanURI);
+ return uri.getPort();
+ } catch (Exception e) {
+ e.printStackTrace();
+ return -1;
+ }
+ }
+
+ public static String getDBType(){
+ try{
+ String jdbcURL = getJDBCURL();
+ String cleanURI = jdbcURL.substring(5);
+ URI uri = URI.create(cleanURI);
+ return uri.getScheme();
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
}
private static AiravataRegistryConnectionDataProvider getProvider() {
return AiravataRegistryFactory.getRegistryConnectionDataProvider();
}
+ static {
+ if(AiravataRegistryFactory.getRegistryConnectionDataProvider() == null){
+ AiravataRegistryFactory.registerRegistryConnectionDataProvider(new AiravataRegistryConnectionDataProviderImpl());
+ }
+
+ }
+
public static String getJDBCUser(){
try {
if (getProvider()!=null){
Modified: airavata/trunk/modules/registry/airavata-registry-service/pom.xml
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-registry-service/pom.xml?rev=1394155&r1=1394154&r2=1394155&view=diff
==============================================================================
--- airavata/trunk/modules/registry/airavata-registry-service/pom.xml (original)
+++ airavata/trunk/modules/registry/airavata-registry-service/pom.xml Thu Oct 4 16:50:42 2012
@@ -69,6 +69,26 @@
<artifactId>jsr311-api</artifactId>
<version>1.1.1</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.derby</groupId>
+ <artifactId>derby</artifactId>
+ <version>${derby.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.derby</groupId>
+ <artifactId>derbyclient</artifactId>
+ <version>${derby.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.derby</groupId>
+ <artifactId>derbynet</artifactId>
+ <version>${derby.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.derby</groupId>
+ <artifactId>derbytools</artifactId>
+ <version>${derby.version}</version>
+ </dependency>
</dependencies>
<build>
Modified: airavata/trunk/modules/registry/airavata-registry-service/src/main/java/org/apache/airavata/registry/services/RegistryService.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-registry-service/src/main/java/org/apache/airavata/registry/services/RegistryService.java?rev=1394155&r1=1394154&r2=1394155&view=diff
==============================================================================
--- airavata/trunk/modules/registry/airavata-registry-service/src/main/java/org/apache/airavata/registry/services/RegistryService.java (original)
+++ airavata/trunk/modules/registry/airavata-registry-service/src/main/java/org/apache/airavata/registry/services/RegistryService.java Thu Oct 4 16:50:42 2012
@@ -23,16 +23,19 @@ package org.apache.airavata.registry.ser
import org.apache.airavata.persistance.registry.jpa.ResourceType;
import org.apache.airavata.persistance.registry.jpa.resources.GatewayResource;
import org.apache.airavata.persistance.registry.jpa.resources.UserResource;
+import org.apache.airavata.persistance.registry.jpa.resources.Utils;
import org.apache.airavata.persistance.registry.jpa.resources.WorkerResource;
import org.apache.airavata.registry.services.utils.DatabaseCreator;
import org.apache.airavata.registry.services.utils.JdbcStorage;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.description.AxisService;
import org.apache.axis2.engine.ServiceLifeCycle;
+import org.apache.derby.drda.NetworkServerControl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
+import java.net.InetAddress;
import java.net.URL;
import java.sql.Connection;
import java.sql.SQLException;
@@ -45,7 +48,9 @@ public class RegistryService implements
public static final String GATEWAY_ID = "gateway.id";
public static final String REGISTRY_USER = "registry.user";
public static final String REGISTRY_PASSWORD = "registry.password";
+ public static final String DERBY_SERVER_MODE_SYS_PROPERTY = "derby.drda.startNetworkServer";
private JdbcStorage db;
+ private NetworkServerControl server;
@Override
public void startUp(ConfigurationContext configurationContext, AxisService axisService) {
@@ -53,21 +58,51 @@ public class RegistryService implements
initializeDB();
}
- private void initializeDB() {
- String jdbcUrl = null;
+ private void startDerbyInServerMode() {
+ try {
+ System.setProperty(DERBY_SERVER_MODE_SYS_PROPERTY, "true");
+ server = new NetworkServerControl(InetAddress.getByName(Utils.getHost()),
+ Utils.getPort(),
+ Utils.getJDBCUser(), Utils.getJDBCUser());
+ java.io.PrintWriter consoleWriter = new java.io.PrintWriter(System.out, true);
+ server.start(consoleWriter);
+ } catch (IOException e) {
+ logger.error("Unable to start Apache derby in the server mode! Check whether " +
+ "specified port is available");
+ } catch (Exception e) {
+ logger.error("Unable to start Apache derby in the server mode! Check whether " +
+ "specified port is available");
+ }
+
+ }
+
+ private void stopDerbyServer() {
+ try {
+ server.shutdown();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ private void initializeDB() {
+ String jdbcUrl = null;
String jdbcDriver = null;
URL resource = this.getClass().getClassLoader().getResource("repository.properties");
Properties properties = new Properties();
try {
properties.load(resource.openStream());
} catch (IOException e) {
- e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
+ logger.error("Unable to read repository properties", e);
}
jdbcDriver = properties.getProperty("registry.jdbc.driver");
jdbcUrl = properties.getProperty("registry.jdbc.url");
String jdbcUser = properties.getProperty("registry.jdbc.user");
String jdbcPassword = properties.getProperty("registry.jdbc.password");
- jdbcUrl = jdbcUrl + "?" + "user=" + jdbcUser + "&" + "password=" + jdbcPassword;
+ jdbcUrl = jdbcUrl + "?" + "user=" + jdbcUser + "&" + "password=" + jdbcPassword;
+
+ if (Utils.getDBType().equals("derby")) {
+ startDerbyInServerMode();
+ }
db = new JdbcStorage(10, 50, jdbcUrl, jdbcDriver, true);
Connection conn = null;
@@ -85,26 +120,29 @@ public class RegistryService implements
} finally {
db.closeConnection(conn);
try {
+ if (!conn.getAutoCommit()) {
+ conn.commit();
+ }
conn.close();
} catch (SQLException e) {
+ logger.error(e.getMessage(), e);
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
}
GatewayResource gatewayResource = new GatewayResource();
- gatewayResource.setGatewayName((String)properties.get(GATEWAY_ID));
- gatewayResource.setOwner((String)properties.get(GATEWAY_ID));
+ gatewayResource.setGatewayName((String) properties.get(GATEWAY_ID));
+ gatewayResource.setOwner((String) properties.get(GATEWAY_ID));
gatewayResource.save();
- UserResource userResource = (UserResource)gatewayResource.create(ResourceType.USER);
- userResource.setUserName((String)properties.get(REGISTRY_USER));
- userResource.setPassword((String)properties.get(REGISTRY_PASSWORD));
+ UserResource userResource = (UserResource) gatewayResource.create(ResourceType.USER);
+ userResource.setUserName((String) properties.get(REGISTRY_USER));
+ userResource.setPassword((String) properties.get(REGISTRY_PASSWORD));
userResource.save();
- WorkerResource workerResource = (WorkerResource)gatewayResource.create(ResourceType.GATEWAY_WORKER);
+ WorkerResource workerResource = (WorkerResource) gatewayResource.create(ResourceType.GATEWAY_WORKER);
workerResource.setUser(userResource.getUserName());
workerResource.save();
- }
+ }
@Override
public void shutDown(ConfigurationContext configurationContext, AxisService axisService) {
- //To change body of implemented methods use File | Settings | File Templates.
}
}
Modified: airavata/trunk/modules/registry/airavata-registry-service/src/main/java/org/apache/airavata/registry/services/utils/ConnectionPool.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-registry-service/src/main/java/org/apache/airavata/registry/services/utils/ConnectionPool.java?rev=1394155&r1=1394154&r2=1394155&view=diff
==============================================================================
--- airavata/trunk/modules/registry/airavata-registry-service/src/main/java/org/apache/airavata/registry/services/utils/ConnectionPool.java (original)
+++ airavata/trunk/modules/registry/airavata-registry-service/src/main/java/org/apache/airavata/registry/services/utils/ConnectionPool.java Thu Oct 4 16:50:42 2012
@@ -379,4 +379,22 @@ public class ConnectionPool {
}
}
}
+
+ public void shutdown(){
+ for (Connection c : availableConnections) {
+ try {
+ c.close();
+ } catch (SQLException e) {
+
+ }
+ }
+
+ for (Connection c : busyConnections) {
+ try {
+ c.close();
+ } catch (SQLException e) {
+ e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
+ }
+ }
+ }
}
Modified: airavata/trunk/modules/registry/airavata-registry-service/src/main/java/org/apache/airavata/registry/services/utils/JdbcStorage.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-registry-service/src/main/java/org/apache/airavata/registry/services/utils/JdbcStorage.java?rev=1394155&r1=1394154&r2=1394155&view=diff
==============================================================================
--- airavata/trunk/modules/registry/airavata-registry-service/src/main/java/org/apache/airavata/registry/services/utils/JdbcStorage.java (original)
+++ airavata/trunk/modules/registry/airavata-registry-service/src/main/java/org/apache/airavata/registry/services/utils/JdbcStorage.java Thu Oct 4 16:50:42 2012
@@ -173,4 +173,8 @@ public class JdbcStorage {
if (connectionPool != null)
connectionPool.dispose();
}
+
+ public void shutdown() {
+ connectionPool.shutdown();
+ }
}
Modified: airavata/trunk/modules/xbaya-gui/src/main/resources/repository.properties
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/xbaya-gui/src/main/resources/repository.properties?rev=1394155&r1=1394154&r2=1394155&view=diff
==============================================================================
--- airavata/trunk/modules/xbaya-gui/src/main/resources/repository.properties (original)
+++ airavata/trunk/modules/xbaya-gui/src/main/resources/repository.properties Thu Oct 4 16:50:42 2012
@@ -84,10 +84,12 @@ registry.jdbc.user=airavata
registry.jdbc.password=airavata
#for mysql
-registry.jdbc.driver=com.mysql.jdbc.Driver
-registry.jdbc.url=jdbc:mysql://localhost:3306/persistent_data
+#registry.jdbc.driver=com.mysql.jdbc.Driver
+#registry.jdbc.url=jdbc:mysql://localhost:3306/persistent_data
+#registry.jdbc.url=jdbc:mysql://gf7.ucs.indiana.edu:4407/registry
+
#for derby
-#registry.jdbc.driver=org.apache.derby.jdbc.ClientDriver
-#registry.jdbc.url=jdbc:derby://localhost:1527/persistent_data;create=true;user=airavata;password=airavata
+registry.jdbc.driver=org.apache.derby.jdbc.ClientDriver
+registry.jdbc.url=jdbc:derby://localhost:1527/persistent_data;create=true;user=airavata;password=airavata