diff --git a/.classpath b/.classpath
index 6acf3ee..11def0e 100644
--- a/.classpath
+++ b/.classpath
@@ -15,11 +15,13 @@
+
+
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
index 6e80039..4e4a3ad 100644
--- a/.settings/org.eclipse.jdt.core.prefs
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -5,4 +5,5 @@ org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source=1.8
diff --git a/pom.xml b/pom.xml
index 6ad0cb4..0d6bb27 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,4 +1,5 @@
-
4.0.0
@@ -11,7 +12,7 @@
2.0.6-SNAPSHOT
war
DataTransferService
-
+
${project.basedir}/src/main/webapp/WEB-INF
@@ -23,8 +24,8 @@
-
-
+
+
scm:git:${gitBaseUrl}/${project.artifactId}.git
scm:git:${gitBaseUrl}/${project.artifactId}.git
@@ -32,12 +33,12 @@
-
+
org.gcube.distribution
gcube-smartgears-bom
- 1.2.0
+ 1.1.0
pom
import
@@ -47,11 +48,11 @@
1.4.0
pom
import
-
+
-
-
+
+
@@ -68,13 +69,7 @@
decompress-archive-plugin
[1.0.0-SNAPSHOT,2.0.0-SNAPSHOT)
-
-
-
- org.slf4j
- slf4j-api
-
org.gcube.core
@@ -85,6 +80,16 @@
common-smartgears
+
+
+
+
+ org.slf4j
+ slf4j-api
+
+
+
+
org.apache.commons
commons-io
@@ -93,100 +98,53 @@
+
+ javax.servlet
+ javax.servlet-api
+ 3.0.1
+
+
javax.ws.rs
javax.ws.rs-api
-
+
+
org.glassfish.jersey.containers
jersey-container-servlet
-
-
-
- org.glassfish.jersey.containers.glassfish
- jersey-gf-cdi
- ${jersey-cdi-version}
+
javax.transaction
javax.transaction-api
1.2
-
- javax.servlet
- javax.servlet-api
- 3.0.1
- provided
-
-
-
-
-
-
-
-
-
-
-
-
-
- org.glassfish.jersey.media
- jersey-media-moxy
+ org.glassfish.jersey.media
+ jersey-media-moxy
org.glassfish.jersey.media
jersey-media-multipart
-
-
- org.glassfish.jersey.bundles
- jaxrs-ri
-
-
-
-
- org.glassfish.jersey.core
- jersey-common
-
-
-
-
-
- javax.enterprise
- cdi-api
- 1.2
-
-
- org.jboss.weld.servlet
- weld-servlet
- ${weld-version}
-
-
- org.jboss
- jandex
- 1.2.2.Final
-
ch.qos.logback
logback-classic
-
test
org.glassfish.jersey.test-framework.providers
jersey-test-framework-provider-simple
-
test
@@ -201,7 +159,7 @@
- ${project.artifactId}
+ ${project.artifactId}
Service used to receive data from other hosting nodes
diff --git a/src/main/java/org/gcube/data/transfer/service/DTService.java b/src/main/java/org/gcube/data/transfer/service/DTService.java
index ce67e3d..d8f0534 100644
--- a/src/main/java/org/gcube/data/transfer/service/DTService.java
+++ b/src/main/java/org/gcube/data/transfer/service/DTService.java
@@ -13,44 +13,61 @@ import org.gcube.data.transfer.service.transfers.engine.PersistenceProvider;
import org.gcube.data.transfer.service.transfers.engine.PluginManager;
import org.gcube.data.transfer.service.transfers.engine.RequestManager;
import org.gcube.data.transfer.service.transfers.engine.TicketManager;
-import org.gcube.data.transfer.service.transfers.engine.impl.AccountingManagerImpl;
-import org.gcube.data.transfer.service.transfers.engine.impl.CapabilitiesProviderImpl;
-import org.gcube.data.transfer.service.transfers.engine.impl.PersistenceProviderImpl;
-import org.gcube.data.transfer.service.transfers.engine.impl.PluginManagerImpl;
-import org.gcube.data.transfer.service.transfers.engine.impl.RequestManagerImpl;
-import org.gcube.data.transfer.service.transfers.engine.impl.TransferTicketManagerImpl;
+import org.gcube.data.transfer.service.transfers.engine.factories.AccountingManagerFactory;
+import org.gcube.data.transfer.service.transfers.engine.factories.CapabilitiesProviderFactory;
+import org.gcube.data.transfer.service.transfers.engine.factories.PersistenceProviderFactory;
+import org.gcube.data.transfer.service.transfers.engine.factories.PluginManagerFactory;
+import org.gcube.data.transfer.service.transfers.engine.factories.RequestManagerFactory;
+import org.gcube.data.transfer.service.transfers.engine.factories.TicketManagerFactory;
import org.glassfish.hk2.utilities.binding.AbstractBinder;
import org.glassfish.jersey.media.multipart.MultiPartFeature;
import org.glassfish.jersey.server.ResourceConfig;
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
@ApplicationPath(ServiceConstants.APPLICATION_PATH)
public class DTService extends ResourceConfig{
public DTService() {
super();
-
- AbstractBinder binder = new AbstractBinder() {
- @Override
- protected void configure() {
- bind(AccountingManagerImpl.class).to(AccountingManager.class);
- bind(CapabilitiesProviderImpl.class).to(CapabilitiesProvider.class);
- bind(PersistenceProviderImpl.class).to(PersistenceProvider.class);
- bind(PluginManagerImpl.class).to(PluginManager.class);
- bind(RequestManagerImpl.class).to(RequestManager.class);
- bind(TransferTicketManagerImpl.class).to(TicketManager.class);
- }
- };
- register(binder);
-
- register(Capabilities.class);
- register(Requests.class);
- register(REST.class);
- register(TransferStatus.class);
-// packages("org.gcube.data.transfer.service.transfers");
- packages("org.glassfish.jersey.media.multipart");
- packages("org.glassfish.jersey.media.multipart.internal");
-// register(ProviderLoggingListener.class);
- register(MultiPartFeature.class);
+ log.warn("Going to define Binder ");
+ try {
+ AbstractBinder binder = new AbstractBinder() {
+ @Override
+ protected void configure() {
+ bindFactory(AccountingManagerFactory.class).to(AccountingManager.class);
+ bindFactory(CapabilitiesProviderFactory.class).to(CapabilitiesProvider.class);
+ bindFactory(PersistenceProviderFactory.class).to(PersistenceProvider.class);
+ bindFactory(PluginManagerFactory.class).to(PluginManager.class);
+ bindFactory(RequestManagerFactory.class).to(RequestManager.class);
+ bindFactory(TicketManagerFactory.class).to(TicketManager.class);
+
+
+
+
+ }
+ };
+ register(binder);
+
+ registerClasses(Capabilities.class);
+ registerClasses(Requests.class);
+ registerClasses(REST.class);
+ registerClasses(TransferStatus.class);
+ // ApplicationContext ctx = ContextProvider.get();
+
+ // ctx.application().addListener(Listener.class.getName());
+
+
+ packages("org.gcube.data.transfer.service.transfers");
+ packages("org.glassfish.jersey.media.multipart");
+ packages("org.glassfish.jersey.media.multipart.internal");
+ // register(ProviderLoggingListener.class);
+ register(MultiPartFeature.class);
+ }catch(Throwable t) {
+ log.error("Init error ",t );
+ throw t;
+ }
}
-
+
}
diff --git a/src/main/java/org/gcube/data/transfer/service/DTServiceLifecycleMAnager.java b/src/main/java/org/gcube/data/transfer/service/DTServiceLifecycleMAnager.java
new file mode 100644
index 0000000..ba00818
--- /dev/null
+++ b/src/main/java/org/gcube/data/transfer/service/DTServiceLifecycleMAnager.java
@@ -0,0 +1,35 @@
+package org.gcube.data.transfer.service;
+
+import javax.inject.Inject;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.gcube.data.transfer.service.transfers.engine.CapabilitiesProvider;
+import org.gcube.smartgears.handlers.application.ApplicationLifecycleEvent.Start;
+import org.gcube.smartgears.handlers.application.ApplicationLifecycleEvent.Stop;
+import org.gcube.smartgears.handlers.application.ApplicationLifecycleHandler;
+
+import lombok.extern.slf4j.Slf4j;
+
+@XmlRootElement(name = "data-transfer-lifecycle")
+@Slf4j
+public class DTServiceLifecycleMAnager extends ApplicationLifecycleHandler{
+
+ @Inject
+ CapabilitiesProvider capabilities;
+
+
+ @Override
+ public void onStart(Start e) {
+
+ super.onStart(e);
+ log.info("Capabilities : "+capabilities.get());
+
+ }
+
+
+ @Override
+ public void onStop(Stop e) {
+ // TODO Auto-generated method stub
+ super.onStop(e);
+ }
+}
diff --git a/src/main/java/org/gcube/data/transfer/service/transfers/REST.java b/src/main/java/org/gcube/data/transfer/service/transfers/REST.java
index 162adc8..87b21f6 100644
--- a/src/main/java/org/gcube/data/transfer/service/transfers/REST.java
+++ b/src/main/java/org/gcube/data/transfer/service/transfers/REST.java
@@ -36,10 +36,13 @@ import org.gcube.data.transfer.model.options.HttpDownloadOptions;
import org.gcube.data.transfer.model.options.TransferOptions.TransferMethod;
import org.gcube.data.transfer.model.settings.FileUploadSettings;
import org.gcube.data.transfer.model.settings.HttpDownloadSettings;
+import org.gcube.data.transfer.service.DTServiceAppManager;
import org.gcube.data.transfer.service.transfers.engine.AccountingManager;
import org.gcube.data.transfer.service.transfers.engine.PersistenceProvider;
import org.gcube.data.transfer.service.transfers.engine.RequestManager;
import org.gcube.data.transfer.service.transfers.engine.faults.DestinationAccessException;
+import org.gcube.data.transfer.service.transfers.engine.impl.AccountingManagerImpl;
+import org.gcube.smartgears.annotations.ManagedBy;
import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
import org.glassfish.jersey.media.multipart.FormDataParam;
@@ -47,6 +50,7 @@ import lombok.extern.slf4j.Slf4j;
@Path(ServiceConstants.REST_SERVLET_NAME+"/{destinationId}/{subPath : \\S*}")
@Slf4j
+@ManagedBy(DTServiceAppManager.class)
public class REST {
@@ -234,7 +238,7 @@ public class REST {
private static void account(boolean read,long volume,boolean success,String path,String mimetype) {
- AccountingManager manager=AccountingManager.get();
+ AccountingManager manager=AccountingManagerImpl.get();
String id=manager.createNewRecord();
if(read) manager.setRead(id);
else manager.setDelete(id);
diff --git a/src/main/java/org/gcube/data/transfer/service/transfers/Requests.java b/src/main/java/org/gcube/data/transfer/service/transfers/Requests.java
index ffd95f4..acec7ab 100644
--- a/src/main/java/org/gcube/data/transfer/service/transfers/Requests.java
+++ b/src/main/java/org/gcube/data/transfer/service/transfers/Requests.java
@@ -11,13 +11,16 @@ import javax.ws.rs.core.MediaType;
import org.gcube.data.transfer.model.ServiceConstants;
import org.gcube.data.transfer.model.TransferRequest;
import org.gcube.data.transfer.model.TransferTicket;
+import org.gcube.data.transfer.service.DTServiceAppManager;
import org.gcube.data.transfer.service.transfers.engine.RequestManager;
+import org.gcube.smartgears.annotations.ManagedBy;
import lombok.extern.slf4j.Slf4j;
@Path(ServiceConstants.REQUESTS_SERVLET_NAME)
@Slf4j
+@ManagedBy(DTServiceAppManager.class)
public class Requests {
@Inject
diff --git a/src/main/java/org/gcube/data/transfer/service/transfers/TransferStatus.java b/src/main/java/org/gcube/data/transfer/service/transfers/TransferStatus.java
index 0289099..b030f18 100644
--- a/src/main/java/org/gcube/data/transfer/service/transfers/TransferStatus.java
+++ b/src/main/java/org/gcube/data/transfer/service/transfers/TransferStatus.java
@@ -14,11 +14,14 @@ import lombok.extern.slf4j.Slf4j;
import org.gcube.data.transfer.model.ServiceConstants;
import org.gcube.data.transfer.model.TransferTicket;
+import org.gcube.data.transfer.service.DTServiceAppManager;
import org.gcube.data.transfer.service.transfers.engine.TicketManager;
import org.gcube.data.transfer.service.transfers.engine.faults.TicketNotFoundException;
+import org.gcube.smartgears.annotations.ManagedBy;
@Path(ServiceConstants.STATUS_SERVLET_NAME)
@Slf4j
+@ManagedBy(DTServiceAppManager.class)
public class TransferStatus {
@Inject
diff --git a/src/main/java/org/gcube/data/transfer/service/transfers/engine/AccountingManager.java b/src/main/java/org/gcube/data/transfer/service/transfers/engine/AccountingManager.java
index 674a59b..4327286 100644
--- a/src/main/java/org/gcube/data/transfer/service/transfers/engine/AccountingManager.java
+++ b/src/main/java/org/gcube/data/transfer/service/transfers/engine/AccountingManager.java
@@ -1,11 +1,8 @@
package org.gcube.data.transfer.service.transfers.engine;
-import org.gcube.data.transfer.service.transfers.engine.impl.AccountingManagerImpl;
-
public interface AccountingManager {
public String createNewRecord();
-// public StorageUsageRecord getById(String id);
public void account(String toAccountRecordId);
@@ -20,13 +17,5 @@ public interface AccountingManager {
-// usageRecord.setOperationResult(TEST_OPERATION_RESULT);
- // usageRecord.setResourceURI(new URI(TEST_RESOURCE_URI));
- // usageRecord.setOperationType(AbstractStorageUsageRecord.OperationType.READ);
- // usageRecord.setDataVolume(generateRandomLong(MIN_DATA_VOLUME, MAX_DATA_VOLUME));
- // usageRecord.setQualifier("image/png");
-
- public static AccountingManager get() {
- return AccountingManagerImpl.get();
- }
+
}
diff --git a/src/main/java/org/gcube/data/transfer/service/transfers/engine/factories/AccountingManagerFactory.java b/src/main/java/org/gcube/data/transfer/service/transfers/engine/factories/AccountingManagerFactory.java
new file mode 100644
index 0000000..56280f0
--- /dev/null
+++ b/src/main/java/org/gcube/data/transfer/service/transfers/engine/factories/AccountingManagerFactory.java
@@ -0,0 +1,19 @@
+package org.gcube.data.transfer.service.transfers.engine.factories;
+
+import org.gcube.data.transfer.service.transfers.engine.AccountingManager;
+import org.gcube.data.transfer.service.transfers.engine.impl.AccountingManagerImpl;
+import org.glassfish.hk2.api.Factory;
+
+public class AccountingManagerFactory implements Factory{
+
+ @Override
+ public void dispose(AccountingManager instance) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public AccountingManager provide() {
+ return AccountingManagerImpl.get();
+ }
+}
diff --git a/src/main/java/org/gcube/data/transfer/service/transfers/engine/factories/CapabilitiesProviderFactory.java b/src/main/java/org/gcube/data/transfer/service/transfers/engine/factories/CapabilitiesProviderFactory.java
new file mode 100644
index 0000000..d0e3fac
--- /dev/null
+++ b/src/main/java/org/gcube/data/transfer/service/transfers/engine/factories/CapabilitiesProviderFactory.java
@@ -0,0 +1,20 @@
+package org.gcube.data.transfer.service.transfers.engine.factories;
+
+import org.gcube.data.transfer.service.transfers.engine.CapabilitiesProvider;
+import org.gcube.data.transfer.service.transfers.engine.impl.CapabilitiesProviderImpl;
+import org.glassfish.hk2.api.Factory;
+
+public class CapabilitiesProviderFactory implements Factory{
+
+ @Override
+ public void dispose(CapabilitiesProvider instance) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public CapabilitiesProvider provide() {
+ return new CapabilitiesProviderImpl(new PersistenceProviderFactory().provide());
+ }
+
+}
diff --git a/src/main/java/org/gcube/data/transfer/service/transfers/engine/factories/PersistenceProviderFactory.java b/src/main/java/org/gcube/data/transfer/service/transfers/engine/factories/PersistenceProviderFactory.java
new file mode 100644
index 0000000..a23ca0b
--- /dev/null
+++ b/src/main/java/org/gcube/data/transfer/service/transfers/engine/factories/PersistenceProviderFactory.java
@@ -0,0 +1,17 @@
+package org.gcube.data.transfer.service.transfers.engine.factories;
+
+import org.gcube.data.transfer.service.transfers.engine.PersistenceProvider;
+import org.gcube.data.transfer.service.transfers.engine.impl.PersistenceProviderImpl;
+import org.glassfish.hk2.api.Factory;
+
+public class PersistenceProviderFactory implements Factory{
+
+
+ public void dispose(PersistenceProvider instance) {};
+
+ @Override
+ public PersistenceProvider provide() {
+ return new PersistenceProviderImpl();
+ }
+
+}
diff --git a/src/main/java/org/gcube/data/transfer/service/transfers/engine/factories/PluginManagerFactory.java b/src/main/java/org/gcube/data/transfer/service/transfers/engine/factories/PluginManagerFactory.java
new file mode 100644
index 0000000..8994b0a
--- /dev/null
+++ b/src/main/java/org/gcube/data/transfer/service/transfers/engine/factories/PluginManagerFactory.java
@@ -0,0 +1,20 @@
+package org.gcube.data.transfer.service.transfers.engine.factories;
+
+import org.gcube.data.transfer.service.transfers.engine.PluginManager;
+import org.gcube.data.transfer.service.transfers.engine.impl.PluginManagerImpl;
+import org.glassfish.hk2.api.Factory;
+
+public class PluginManagerFactory implements Factory{
+
+
+ @Override
+ public void dispose(PluginManager instance) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public PluginManager provide() {
+ return new PluginManagerImpl();
+ }
+}
diff --git a/src/main/java/org/gcube/data/transfer/service/transfers/engine/factories/RequestManagerFactory.java b/src/main/java/org/gcube/data/transfer/service/transfers/engine/factories/RequestManagerFactory.java
new file mode 100644
index 0000000..6bf8cf3
--- /dev/null
+++ b/src/main/java/org/gcube/data/transfer/service/transfers/engine/factories/RequestManagerFactory.java
@@ -0,0 +1,21 @@
+package org.gcube.data.transfer.service.transfers.engine.factories;
+
+import org.gcube.data.transfer.service.transfers.engine.RequestManager;
+import org.gcube.data.transfer.service.transfers.engine.impl.RequestManagerImpl;
+import org.glassfish.hk2.api.Factory;
+
+public class RequestManagerFactory implements Factory{
+
+
+ @Override
+ public void dispose(RequestManager instance) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public RequestManager provide() {
+ return new RequestManagerImpl(new TicketManagerFactory().provide(),
+ new PersistenceProviderFactory().provide());
+ }
+}
diff --git a/src/main/java/org/gcube/data/transfer/service/transfers/engine/factories/TicketManagerFactory.java b/src/main/java/org/gcube/data/transfer/service/transfers/engine/factories/TicketManagerFactory.java
new file mode 100644
index 0000000..a77258a
--- /dev/null
+++ b/src/main/java/org/gcube/data/transfer/service/transfers/engine/factories/TicketManagerFactory.java
@@ -0,0 +1,20 @@
+package org.gcube.data.transfer.service.transfers.engine.factories;
+
+import org.gcube.data.transfer.service.transfers.engine.TicketManager;
+import org.gcube.data.transfer.service.transfers.engine.impl.TransferTicketManagerImpl;
+import org.glassfish.hk2.api.Factory;
+
+public class TicketManagerFactory implements Factory{
+
+ @Override
+ public void dispose(TicketManager instance) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public TicketManager provide() {
+ return new TransferTicketManagerImpl();
+ }
+
+}
diff --git a/src/main/java/org/gcube/data/transfer/service/transfers/engine/impl/AbstractTicketHandler.java b/src/main/java/org/gcube/data/transfer/service/transfers/engine/impl/AbstractTicketHandler.java
index 927c554..d937736 100644
--- a/src/main/java/org/gcube/data/transfer/service/transfers/engine/impl/AbstractTicketHandler.java
+++ b/src/main/java/org/gcube/data/transfer/service/transfers/engine/impl/AbstractTicketHandler.java
@@ -270,7 +270,7 @@ public abstract class AbstractTicketHandler {
private void account(AccountingDetails toAccount) {
- AccountingManager manager=AccountingManager.get();
+ AccountingManager manager=AccountingManagerImpl.get();
String accountingId=toAccount.getAccountingId();
manager.setMimeType(accountingId, toAccount.getMimeType());
manager.setResourceURI(accountingId, toAccount.getUri());
diff --git a/src/main/java/org/gcube/data/transfer/service/transfers/engine/impl/RequestManagerImpl.java b/src/main/java/org/gcube/data/transfer/service/transfers/engine/impl/RequestManagerImpl.java
index 0cbfaac..8738db5 100644
--- a/src/main/java/org/gcube/data/transfer/service/transfers/engine/impl/RequestManagerImpl.java
+++ b/src/main/java/org/gcube/data/transfer/service/transfers/engine/impl/RequestManagerImpl.java
@@ -3,7 +3,6 @@ package org.gcube.data.transfer.service.transfers.engine.impl;
import java.util.Properties;
import java.util.UUID;
import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
@@ -60,7 +59,7 @@ public class RequestManagerImpl implements RequestManager{
this.persistenceProvider=persistenceProvider;
this.pluginManager=PluginManager.get();
this.ticketManager=ticketManager;
- this.accounting=AccountingManager.get();
+ this.accounting=AccountingManagerImpl.get();
}
diff --git a/src/main/resources/META-INF/context.xml b/src/main/resources/META-INF/context.xml
new file mode 100644
index 0000000..7650823
--- /dev/null
+++ b/src/main/resources/META-INF/context.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/META-INF/services/org.gcube.smartgears.handlers.application.ApplicationHandler b/src/main/resources/META-INF/services/org.gcube.smartgears.handlers.application.ApplicationHandler
new file mode 100644
index 0000000..98950c9
--- /dev/null
+++ b/src/main/resources/META-INF/services/org.gcube.smartgears.handlers.application.ApplicationHandler
@@ -0,0 +1 @@
+org.gcube.data.transfer.service.DTServiceLifecycleMAnager
\ No newline at end of file
diff --git a/src/test/java/org/gcube/data/transfer/service/Accountingtests.java b/src/test/java/org/gcube/data/transfer/service/Accountingtests.java
index 6672f92..e55d26b 100644
--- a/src/test/java/org/gcube/data/transfer/service/Accountingtests.java
+++ b/src/test/java/org/gcube/data/transfer/service/Accountingtests.java
@@ -2,12 +2,13 @@ package org.gcube.data.transfer.service;
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
import org.gcube.data.transfer.service.transfers.engine.AccountingManager;
+import org.gcube.data.transfer.service.transfers.engine.impl.AccountingManagerImpl;
public class Accountingtests {
public static void main(String[] args) {
SecurityTokenProvider.instance.set("feda0617-cd9d-4841-b6f0-e047da5d32ed-98187548");
- AccountingManager manager=AccountingManager.get();
+ AccountingManager manager=AccountingManagerImpl.get();
String id=manager.createNewRecord();
manager.setSuccessful(id, true);
System.out.println("DONE");