// Path: testapps/morphia_model/src/main/java/test/model/Order.java
// @Entity("order")
// public class Order extends MorphiaAdaptiveRecord<Order> implements UserLinked, CustomerLinked {
// 
//     public String agent;
// 
//     public String customer;
// 
//     public String product;
// 
//     public int quantity;
// 
//     @Override
//     public boolean isLinkedTo(Principal user) {
//         String username = user.getName();
//         return S.eq(username, agent);
//     }
// 
//     @Override
//     public boolean isLinkedToCustomer(Principal principal) {
//         String username = principal.getName();
//         return S.eq(username, customer);
//     }
// 
//     @Stateless
//     public static class Dao extends MorphiaDao<Order> {
//     }
// 
// }
// 
// Path: testapps/morphia_model/src/main/java/test/model/User.java
// @Entity("user")
// public class User extends MorphiaUserBase<User> implements UserLinked {
// 
//     public String firstName;
//     public String lastName;
// 
//     @Override
//     public boolean isLinkedTo(Principal user) {
//         return S.eq(email, user.getName());
//     }
// 
//     @Stateless
//     public static class Dao extends MorphiaDao<User> {
// 
//         public User findByUsername(String username) {
//             return findOneBy("email", username);
//         }
// 
//         public boolean authenticate(String username, char[] password) {
//             User user = findByUsername(username);
//             if (null == user) {
//                 return false;
//             }
//             return user.verifyPassword(password);
//         }
// 
//     }
// }


import act.controller.annotation.UrlContext;
import act.db.DbBind;
import org.osgl.aaa.AAA;
import org.osgl.mvc.annotation.GetAction;
import test.model.Order;
import test.model.User;
package test.endpoint;


@UrlContext("my")
public class MyService extends AuthenticatedServiceBaseV1 {

    @GetAction
    public User myProfile() {
        AAA.requirePermission("view-my-profile");
        return me;
    }

    @GetAction("orders/{order}")
    public Order myOrder(@DbBind Order order) {
        AAA.requirePermission(order, "view-my-order");
// Path: testapps/morphia_model/src/main/java/test/model/Order.java
// @Entity("order")
// public class Order extends MorphiaAdaptiveRecord<Order> implements UserLinked, CustomerLinked {
// 
//     public String agent;
// 
//     public String customer;
// 
//     public String product;
// 
//     public int quantity;
// 
//     @Override
//     public boolean isLinkedTo(Principal user) {
//         String username = user.getName();
//         return S.eq(username, agent);
//     }
// 
//     @Override
//     public boolean isLinkedToCustomer(Principal principal) {
//         String username = principal.getName();
//         return S.eq(username, customer);
//     }
// 
//     @Stateless
//     public static class Dao extends MorphiaDao<Order> {
//     }
// 
// }
// 
// Path: testapps/morphia_model/src/main/java/test/model/User.java
// @Entity("user")
// public class User extends MorphiaUserBase<User> implements UserLinked {
// 
//     public String firstName;
//     public String lastName;
// 
//     @Override
//     public boolean isLinkedTo(Principal user) {
//         return S.eq(email, user.getName());
//     }
// 
//     @Stateless
//     public static class Dao extends MorphiaDao<User> {
// 
//         public User findByUsername(String username) {
//             return findOneBy("email", username);
//         }
// 
//         public boolean authenticate(String username, char[] password) {
//             User user = findByUsername(username);
//             if (null == user) {
//                 return false;
//             }
//             return user.verifyPassword(password);
//         }
// 
//     }
// }


// Path: testapps/morphia_model/src/main/java/test/endpoint/MyService.java
import act.controller.annotation.UrlContext;
import act.db.DbBind;
import org.osgl.aaa.AAA;
import org.osgl.mvc.annotation.GetAction;
import test.model.Order;
import test.model.User;

package test.endpoint;


@UrlContext("my")
public class MyService extends AuthenticatedServiceBaseV1 {

    @GetAction
    public User myProfile() {
        AAA.requirePermission("view-my-profile");
        return me;
    }

    @GetAction("orders/{order}")
    public Order myOrder(@DbBind Order order) {
        AAA.requirePermission(order, "view-my-order");
        return order;