diff --git a/build.xml b/build.xml
new file mode 100644
index 0000000..902d118
--- /dev/null
+++ b/build.xml
@@ -0,0 +1,530 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/etc/build.properties b/etc/build.properties
new file mode 100755
index 0000000..51c09f5
--- /dev/null
+++ b/etc/build.properties
@@ -0,0 +1,6 @@
+
+package = org.gcube.vremanagement.vremodeler
+lib.dir = Dependencies/VDLModeler
+wsdl.1 = ModelFactory
+wsdl.2 = Model
+namespace.1=http://gcube-system.org/vremanagement/vremodeler
diff --git a/etc/deploy-jndi-config.xml b/etc/deploy-jndi-config.xml
new file mode 100755
index 0000000..7dcac6e
--- /dev/null
+++ b/etc/deploy-jndi-config.xml
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+
+
+
+
+ factory
+ org.globus.wsrf.jndi.BeanFactory
+
+
+ mode
+ pull
+
+
+ fileName
+ registration.xml
+
+
+
+
+
+
+
+ factory
+ org.globus.wsrf.jndi.BeanFactory
+
+
+ resourceClass
+ org.gcube.vremanagement.vremodeler.ModelerResource
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/etc/deploy-server.wsdd b/etc/deploy-server.wsdd
new file mode 100644
index 0000000..f234cd5
--- /dev/null
+++ b/etc/deploy-server.wsdd
@@ -0,0 +1,38 @@
+
+
+
+
+
+ share/schema/org.acme.sample/Stateless_service.wsdl
+
+
+
+
+
+
+
+
+
+ share/schema/org.acme.sample/Stateful_service.wsdl
+
+
+
+
+
+
+
+
+
+
+ share/schema/org.acme.sample/Factory_service.wsdl
+
+
+
+
+
+
+
+
diff --git a/etc/profile.xml b/etc/profile.xml
new file mode 100644
index 0000000..a0a3835
--- /dev/null
+++ b/etc/profile.xml
@@ -0,0 +1,49 @@
+
+
+
+ Service
+
+ A very simple gCube Service
+ Samples
+ SampleService
+ 1.0
+
+
+ Describes port-types
+ Main
+ 1.0
+
+
+
+ Samples
+ SampleService
+
+ Stubs
+ 1.0
+
+ false
+
+
+ org.acme.sample.gar
+
+ acme/sample/stateless
+
+
+
+ acme/sample/stateful
+
+
+
+ acme/sample/factory
+
+
+
+
+ Describes port-type stubs
+ Stubs
+ 1.0
+ org.acme.sample.stubs.jar
+
+
+
+
diff --git a/etc/registration.xml b/etc/registration.xml
new file mode 100644
index 0000000..738d543
--- /dev/null
+++ b/etc/registration.xml
@@ -0,0 +1,29 @@
+
+
+
+
+ 60
+
+
+
+
+
+
+
+ 60000
+ tutorial:Name
+ tutorial:Visits
+
+
+
+
+
+
+
+
diff --git a/etc/security_descriptor.xml b/etc/security_descriptor.xml
new file mode 100644
index 0000000..3795dcb
--- /dev/null
+++ b/etc/security_descriptor.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/schema/Model.wsdl b/schema/Model.wsdl
new file mode 100644
index 0000000..1613540
--- /dev/null
+++ b/schema/Model.wsdl
@@ -0,0 +1,393 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/schema/ModelFactory.wsdl b/schema/ModelFactory.wsdl
new file mode 100644
index 0000000..5f2a1a4
--- /dev/null
+++ b/schema/ModelFactory.wsdl
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/org/gcube/vremanagement/vremodeler/db/DBInterface.java b/src/org/gcube/vremanagement/vremodeler/db/DBInterface.java
index f074172..b38a51b 100644
--- a/src/org/gcube/vremanagement/vremodeler/db/DBInterface.java
+++ b/src/org/gcube/vremanagement/vremodeler/db/DBInterface.java
@@ -10,7 +10,7 @@ import java.sql.SQLException;
import java.sql.Statement;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.diligentproject.vdlgeneratorservice.model.impl.ModelService;
+import org.gcube.common.core.utils.logging.GCUBELog;
/**
*
@@ -19,9 +19,7 @@ import org.diligentproject.vdlgeneratorservice.model.impl.ModelService;
*/
public class DBInterface {
-
- private static Log logger =LogFactory.getLog(ModelService.class.getName());
-
+
private static Connection conn;
private static String dbFile = System.getenv("GLOBUS_LOCATION") + File.separator + "etc" + File.separator + "org_diligentproject_vdlgeneratorservice_model" + File.separator + "hsqldb" + File.separator + "vdldb";
@@ -68,7 +66,7 @@ public class DBInterface {
st = conn.createStatement(); // statement objects can be reused with
st.executeUpdate(query);
st.close();
- }catch(SQLException e){logger.error("error executing Query");throw new RemoteException("error creating SQL statement",e);}
+ }catch(SQLException e){logger.error("error executing Query", e);throw new RemoteException("error creating SQL statement",e);}
}
/**
diff --git a/src/org/gcube/vremanagement/vremodeler/impl/ModelFactoryService.java b/src/org/gcube/vremanagement/vremodeler/impl/ModelFactoryService.java
index f75d7e8..944a178 100644
--- a/src/org/gcube/vremanagement/vremodeler/impl/ModelFactoryService.java
+++ b/src/org/gcube/vremanagement/vremodeler/impl/ModelFactoryService.java
@@ -13,10 +13,14 @@ import javax.naming.NamingException;
import javax.xml.namespace.QName;
import javax.xml.rpc.server.ServiceLifecycle;
+import org.apache.axis.components.uuid.UUIDGen;
+import org.apache.axis.components.uuid.UUIDGenFactory;
import org.apache.axis.message.addressing.AttributedURI;
import org.apache.axis.message.addressing.EndpointReferenceType;
import org.gcube.common.core.contexts.GCUBEServiceContext;
+import org.gcube.common.core.faults.GCUBEFault;
import org.gcube.common.core.porttypes.GCUBEStartupPortType;
+import org.gcube.common.core.utils.logging.GCUBELog;
import org.globus.wsrf.Constants;
import org.globus.wsrf.NoResourceHomeException;
import org.globus.wsrf.ResourceContext;
@@ -39,18 +43,23 @@ import org.apache.commons.logging.LogFactory;
public class ModelFactoryService extends GCUBEStartupPortType{
+ private GCUBELog logger = new GCUBELog(this);
+ private static final UUIDGen uuidGen = UUIDGenFactory.getUUIDGen();
+
@Override
- protected GCUBEServiceContext getServiceContext() {
- // TODO Auto-generated method stub
- return null;
+ protected ServiceContext getServiceContext() {
+ return ServiceContext.getContext();
}
/* Implementation of createResource Operation */
- public CreateResourceResponse createResource(CreateResource request) throws RemoteException {
-
-
-
- return null;
+ public EndpointReferenceType createResource(CreateResource request) throws GCUBEFault {
+ String id=uuidGen.nextUUID();
+ ModelerResource mr;
+ try{
+ ModelerContext pctx= ModelerContext.getPortTypeContext();
+ mr=(ModelerResource)pctx.getWSHome().create(pctx.makeKey(id), id);
+ return mr.getEPR();
+ }catch (Exception e){logger.error("error creating resource",e); throw new GCUBEFault(e);}
}
diff --git a/src/org/gcube/vremanagement/vremodeler/impl/ModelerContext.java b/src/org/gcube/vremanagement/vremodeler/impl/ModelerContext.java
index 57916cd..78bc3b7 100644
--- a/src/org/gcube/vremanagement/vremodeler/impl/ModelerContext.java
+++ b/src/org/gcube/vremanagement/vremodeler/impl/ModelerContext.java
@@ -1,25 +1,33 @@
package org.gcube.vremanagement.vremodeler.impl;
-import org.gcube.common.core.contexts.GCUBEPortTypeContext;
-import org.gcube.common.core.contexts.GCUBEServiceContext;
-public class ModelerContext extends GCUBEPortTypeContext{
+import org.gcube.common.core.contexts.GCUBEStatefulPortTypeContext;
+public class ModelerContext extends GCUBEStatefulPortTypeContext{
+
+ public static String FREQUENT_USER_LIMIT_JNDI_NAME = "frequentUserLimit";
+
+ private static ModelerContext cache = new ModelerContext();
+
+ private ModelerContext(){}
+
@Override
public String getJNDIName() {
- // TODO Auto-generated method stub
- return null;
+ return "gcube/vdlmanagement/vdlmodeler/ModelerService";
}
@Override
public String getNamespace() {
- // TODO Auto-generated method stub
return null;
}
@Override
- public GCUBEServiceContext getServiceContext() {
- return null;
- }
+ public ServiceContext getServiceContext() {
+ return ServiceContext.getContext();
+ }
+
+ public static ModelerContext getPortTypeContext() {
+ return cache;
+ }
}
diff --git a/src/org/gcube/vremanagement/vremodeler/impl/ModelerHome.java b/src/org/gcube/vremanagement/vremodeler/impl/ModelerHome.java
index 0c04ec6..ab78927 100644
--- a/src/org/gcube/vremanagement/vremodeler/impl/ModelerHome.java
+++ b/src/org/gcube/vremanagement/vremodeler/impl/ModelerHome.java
@@ -1,14 +1,12 @@
package org.gcube.vremanagement.vremodeler.impl;
-import org.gcube.common.core.contexts.GCUBEStatefulPortTypeContext;
import org.gcube.common.core.state.GCUBEWSHome;
public class ModelerHome extends GCUBEWSHome{
@Override
- public GCUBEStatefulPortTypeContext getPortTypeContext() {
- // TODO Auto-generated method stub
- return null;
+ public ModelerContext getPortTypeContext() {
+ return ModelerContext.getPortTypeContext();
}
}
diff --git a/src/org/gcube/vremanagement/vremodeler/impl/ModelerResource.java b/src/org/gcube/vremanagement/vremodeler/impl/ModelerResource.java
index b2c615d..0dedad5 100644
--- a/src/org/gcube/vremanagement/vremodeler/impl/ModelerResource.java
+++ b/src/org/gcube/vremanagement/vremodeler/impl/ModelerResource.java
@@ -1,5 +1,14 @@
package org.gcube.vremanagement.vremodeler.impl;
-public class ModelerResource {
+import org.gcube.common.core.state.GCUBEWSResource;
+import org.globus.wsrf.ResourceException;
+
+public class ModelerResource extends GCUBEWSResource {
+
+ @Override
+ protected void initialise(Object... arg0) throws ResourceException {
+ // TODO Auto-generated method stub
+
+ }
}
diff --git a/src/org/gcube/vremanagement/vremodeler/impl/ServiceContext.java b/src/org/gcube/vremanagement/vremodeler/impl/ServiceContext.java
index d8b7354..455838f 100644
--- a/src/org/gcube/vremanagement/vremodeler/impl/ServiceContext.java
+++ b/src/org/gcube/vremanagement/vremodeler/impl/ServiceContext.java
@@ -4,10 +4,21 @@ import org.gcube.common.core.contexts.GCUBEServiceContext;
public class ServiceContext extends GCUBEServiceContext{
- @Override
- protected String getJNDIName() {
- // TODO Auto-generated method stub
- return null;
+ /** Single context instance, created eagerly */
+ private static ServiceContext cache = new ServiceContext();
+
+ /** Returns cached instance */
+ public static ServiceContext getContext() {return cache;}
+
+ /** Prevents accidental creation of more instances */
+ private ServiceContext(){};
+
+ /** {@inheritDoc} */
+ protected String getJNDIName() {return "gcube/vdlmanagement/vdlmodeler";}
+
+ protected void onReady() throws Exception{
+ logger.info("ready event invoked on " + this.getName());
+
}
}