// Path: airomem-direct-banksample/src/main/java/pl/setblack/airomem/direct/banksample/domain/Account.java
// public final class Account implements Serializable {
//   
//   private static final long serialVersionUID = 1L;
// 
//   
//   
//     public final String id;
// 
//     public final BigDecimal value;
// 
//     protected Account() {
//       id = "";
//       value= BigDecimal.ONE;
//     }
//     
//     Account(final String id, final BigDecimal value) {
//         this.id = id;
//         this.value = value;
//     }
// 
//     Account change(final BigDecimal change) {
//         return new Account(this.id, value.add(change));
//     }
// 
// }
// 
// Path: airomem-direct-banksample/src/main/java/pl/setblack/airomem/direct/banksample/domain/Bank.java
// public final class Bank implements Serializable {
// 
//     private static final long serialVersionUID = 1l;
//     private final Random random = new Random(42);
// 
//     private transient RandomBasedGenerator uuidGenerator;
// 
//     private final Map<String, Account> accounts = new ConcurrentHashMap<>();
// 
//     /**
//      * This conctructor is needed by airomem direct.
//      */
//     public Bank() {
// 
//     }
// 
//     private synchronized String generateId() {
//         if (uuidGenerator == null) {
//             uuidGenerator = Generators.randomBasedGenerator(random);
//         }
//         return uuidGenerator.generate().toString();
//     }
// 
//     public BigDecimal getTotalAmount() {
//         return BigDecimal.ZERO;
//     }
// 
//     public Account registerNewAccount(BigDecimal value) {
//         final Account acc = new Account(generateId(), value);
//         this.accounts.put(acc.id, acc);
//         return acc;
//     }
// 
//     public Account getAccount(String id) {
//         return this.accounts.get(id);
//     }
// 
//     public Account change(String id, BigDecimal value) {
//         Account changed = this.accounts.get(id).change(value);
//         this.accounts.put(id, changed);
//         return changed;
//     }
// 
//     public Iterable<Account> getAllAccounts() {
//         return Collections.unmodifiableCollection(this.accounts.values());
//     }
// }


import java.math.BigDecimal;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import pl.setblack.airomem.direct.Persistent;
import pl.setblack.airomem.direct.PersistentObject;
import pl.setblack.airomem.direct.banksample.domain.Account;
import pl.setblack.airomem.direct.banksample.domain.Bank;
/*
 *  Created by Jarek Ratajski
 */
package pl.setblack.airomem.direct.banksample.rest;


/**
 * REST Web Service
 *
 * @author jarek ratajski
 */
@Path("bank")
@Persistent
public class BankResource {

    @PersistentObject
// Path: airomem-direct-banksample/src/main/java/pl/setblack/airomem/direct/banksample/domain/Account.java
// public final class Account implements Serializable {
//   
//   private static final long serialVersionUID = 1L;
// 
//   
//   
//     public final String id;
// 
//     public final BigDecimal value;
// 
//     protected Account() {
//       id = "";
//       value= BigDecimal.ONE;
//     }
//     
//     Account(final String id, final BigDecimal value) {
//         this.id = id;
//         this.value = value;
//     }
// 
//     Account change(final BigDecimal change) {
//         return new Account(this.id, value.add(change));
//     }
// 
// }
// 
// Path: airomem-direct-banksample/src/main/java/pl/setblack/airomem/direct/banksample/domain/Bank.java
// public final class Bank implements Serializable {
// 
//     private static final long serialVersionUID = 1l;
//     private final Random random = new Random(42);
// 
//     private transient RandomBasedGenerator uuidGenerator;
// 
//     private final Map<String, Account> accounts = new ConcurrentHashMap<>();
// 
//     /**
//      * This conctructor is needed by airomem direct.
//      */
//     public Bank() {
// 
//     }
// 
//     private synchronized String generateId() {
//         if (uuidGenerator == null) {
//             uuidGenerator = Generators.randomBasedGenerator(random);
//         }
//         return uuidGenerator.generate().toString();
//     }
// 
//     public BigDecimal getTotalAmount() {
//         return BigDecimal.ZERO;
//     }
// 
//     public Account registerNewAccount(BigDecimal value) {
//         final Account acc = new Account(generateId(), value);
//         this.accounts.put(acc.id, acc);
//         return acc;
//     }
// 
//     public Account getAccount(String id) {
//         return this.accounts.get(id);
//     }
// 
//     public Account change(String id, BigDecimal value) {
//         Account changed = this.accounts.get(id).change(value);
//         this.accounts.put(id, changed);
//         return changed;
//     }
// 
//     public Iterable<Account> getAllAccounts() {
//         return Collections.unmodifiableCollection(this.accounts.values());
//     }
// }


// Path: airomem-direct-banksample/src/main/java/pl/setblack/airomem/direct/banksample/rest/BankResource.java
import java.math.BigDecimal;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import pl.setblack.airomem.direct.Persistent;
import pl.setblack.airomem.direct.PersistentObject;
import pl.setblack.airomem.direct.banksample.domain.Account;
import pl.setblack.airomem.direct.banksample.domain.Bank;

/*
 *  Created by Jarek Ratajski
 */
package pl.setblack.airomem.direct.banksample.rest;


/**
 * REST Web Service
 *
 * @author jarek ratajski
 */
@Path("bank")
@Persistent
public class BankResource {

    @PersistentObject
    private Bank bank;