I am trying to implement a @Strategy using the FieldStrategy interface.  The
problem I am having is that when I go to persist my object it is always
going with the default handlers. I am not receiving any exceptions until it
goes to do the insert.  I am wondering if I have done this correctly or not
so any feedback is appreciated.  

    package test.openjpa.entity;

    import java.io.Serializable;
    import java.util.UUID;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.Id;
    import javax.persistence.PrePersist;
    import org.apache.openjpa.persistence.jdbc.Strategy;

    @Entity
    public class Company implements Serializable   {
        /**
         * 
         */
        private static final long serialVersionUID = 6741913908217906576L;
        
        @Id
        @Strategy("test.openjpa.entity.OpenUuid")
        protected UUID id;
        
        @Column(name="name")
        private String companyName;

        public String getCompanyName() {
                return companyName;
        }

        public void setCompanyName(String companyName) {
                this.companyName = companyName;
        }
        

        @Override
        public String toString() {
                StringBuilder sb = new StringBuilder();
                sb.append("Id = ").append(id).append(" - ");
                sb.append("Name = ").append(companyName);
                return sb.toString();
        }

        
        public UUID getId() {
                return id;
        }
        public void setId(UUID id) {
                this.id = id;
        }
        @PrePersist
        public void assignUUID(){
                this.setId(UUID.randomUUID());
        }
    }

    package test.openjpa.entity;

    import java.sql.SQLException;
    import java.util.UUID;
    import org.apache.openjpa.jdbc.kernel.JDBCFetchConfiguration;
    import org.apache.openjpa.jdbc.kernel.JDBCStore;
    import org.apache.openjpa.jdbc.meta.FieldMapping;
    import org.apache.openjpa.jdbc.meta.FieldStrategy;
    import org.apache.openjpa.jdbc.sql.Joins;
    import org.apache.openjpa.jdbc.sql.Result;
    import org.apache.openjpa.jdbc.sql.RowManager;
    import org.apache.openjpa.jdbc.sql.SQLBuffer;
    import org.apache.openjpa.jdbc.sql.Select;
    import org.apache.openjpa.jdbc.sql.SelectExecutor;
    import org.apache.openjpa.kernel.OpenJPAStateManager;
    import org.apache.openjpa.persistence.jdbc.Strategy;


    public class OpenUuid implements FieldStrategy {

        /**
         * 
         */
        private static final long serialVersionUID = -7313412704454986736L;


        public class PostgresUuid extends org.postgresql.util.PGobject {
                public static final long serialVersionUID = 89469482L;

                public PostgresUuid(UUID u) throws java.sql.SQLException {
                        super();
                        this.setType("uuid");
                        this.setValue(u.toString());
                }

                public PostgresUuid() throws java.sql.SQLException {
                        super();
                        this.setType("uuid");
                        this.setValue(null);
                }
        }

        @Override
        public String getAlias() {
                // TODO Auto-generated method stub
                return null;
        }

        @Override
        public void map(boolean adapt) {
                // TODO Auto-generated method stub

        }

        @Override
        public void initialize() {
                // TODO Auto-generated method stub

        }

        @Override
        public void insert(OpenJPAStateManager sm, JDBCStore store, RowManager 
rm)
throws SQLException {
                System.out.println("I am inside the insert");

        }

        @Override
        public void update(OpenJPAStateManager sm, JDBCStore store, RowManager 
rm)
throws SQLException {
                // TODO Auto-generated method stub

        }

        @Override
        public void delete(OpenJPAStateManager sm, JDBCStore store, RowManager 
rm)
throws SQLException {
                // TODO Auto-generated method stub

        }

        @Override
        public Boolean isCustomInsert(OpenJPAStateManager sm, JDBCStore store) {
                System.out.println("I am inside the isCustominsert");
                return true;
        }

        @Override
        public Boolean isCustomUpdate(OpenJPAStateManager sm, JDBCStore store) {
                // TODO Auto-generated method stub
                return null;
        }

        @Override
        public Boolean isCustomDelete(OpenJPAStateManager sm, JDBCStore store) {
                // TODO Auto-generated method stub
                return null;
        }

        @Override
        public void customInsert(OpenJPAStateManager sm, JDBCStore store) throws
SQLException {
                System.out.println("I am inside the custominsert");

        }

        @Override
        public void customUpdate(OpenJPAStateManager sm, JDBCStore store) throws
SQLException {
                // TODO Auto-generated method stub

        }

        @Override
        public void customDelete(OpenJPAStateManager sm, JDBCStore store) throws
SQLException {
                // TODO Auto-generated method stub

        }

        @Override
        public void setFieldMapping(FieldMapping owner) {
                System.out.println("I am inside the FieldMapping");

        }

        @Override
        public int supportsSelect(Select sel, int type, OpenJPAStateManager sm,
JDBCStore store,
                        JDBCFetchConfiguration fetch) {
                // TODO Auto-generated method stub
                return 0;
        }

        @Override
        public void selectEagerParallel(SelectExecutor sel, OpenJPAStateManager 
sm,
JDBCStore store,
                        JDBCFetchConfiguration fetch, int eagerMode) {
                // TODO Auto-generated method stub

        }

        @Override
        public void selectEagerJoin(Select sel, OpenJPAStateManager sm, 
JDBCStore
store, JDBCFetchConfiguration fetch,
                        int eagerMode) {
                // TODO Auto-generated method stub

        }

        @Override
        public boolean isEagerSelectToMany() {
                // TODO Auto-generated method stub
                return false;
        }

        @Override
        public int select(Select sel, OpenJPAStateManager sm, JDBCStore store,
JDBCFetchConfiguration fetch, int eagerMode) {
                // TODO Auto-generated method stub
                return 0;
        }

        @Override
        public Object loadEagerParallel(OpenJPAStateManager sm, JDBCStore store,
JDBCFetchConfiguration fetch, Object res)
                        throws SQLException {
                // TODO Auto-generated method stub
                return null;
        }

        @Override
        public void loadEagerJoin(OpenJPAStateManager sm, JDBCStore store,
JDBCFetchConfiguration fetch, Result res)
                        throws SQLException {
                // TODO Auto-generated method stub

        }

        @Override
        public void load(OpenJPAStateManager sm, JDBCStore store,
JDBCFetchConfiguration fetch, Result res)
                        throws SQLException {
                // TODO Auto-generated method stub

        }

        @Override
        public void load(OpenJPAStateManager sm, JDBCStore store,
JDBCFetchConfiguration fetch) throws SQLException {
                // TODO Auto-generated method stub

        }

        @Override
        public Object toDataStoreValue(Object val, JDBCStore store) {
                System.out.println("I am inside the toDataStoreValue");
                return null;
        }

        @Override
        public Object toKeyDataStoreValue(Object val, JDBCStore store) {
                System.out.println("I am inside the toKeyDataStoreValue");
                return null;
        }

        @Override
        public void appendIsEmpty(SQLBuffer sql, Select sel, Joins joins) {
                System.out.println("I am inside the appendIsEmpty");

        }

        @Override
        public void appendIsNotEmpty(SQLBuffer sql, Select sel, Joins joins) {
                System.out.println("I am inside the appendIsNotEmpty");

        }

        @Override
        public void appendIsNull(SQLBuffer sql, Select sel, Joins joins) {
                System.out.println("I am inside the appendIsNull");

        }

        @Override
        public void appendIsNotNull(SQLBuffer sql, Select sel, Joins joins) {
                System.out.println("I am inside the appendIsNotNull");

        }

        @Override
        public void appendSize(SQLBuffer sql, Select sel, Joins joins) {
                // TODO Auto-generated method stub

        }

        @Override
        public void appendIndex(SQLBuffer sql, Select sel, Joins joins) {
                // TODO Auto-generated method stub

        }

        @Override
        public void appendType(SQLBuffer sql, Select sel, Joins joins) {
                // TODO Auto-generated method stub

        }

        @Override
        public Joins join(Joins joins, boolean forceOuter) {
                // TODO Auto-generated method stub
                return null;
        }

        @Override
        public Joins joinKey(Joins joins, boolean forceOuter) {
                // TODO Auto-generated method stub
                return null;
        }

        @Override
        public Joins joinRelation(Joins joins, boolean forceOuter, boolean
traverse) {
                // TODO Auto-generated method stub
                return null;
        }

        @Override
        public Joins joinKeyRelation(Joins joins, boolean forceOuter, boolean
traverse) {
                // TODO Auto-generated method stub
                return null;
        }

        @Override
        public Object loadProjection(JDBCStore store, JDBCFetchConfiguration 
fetch,
Result res, Joins joins)
                        throws SQLException {
                // TODO Auto-generated method stub
                return null;
        }

        @Override
        public Object loadKeyProjection(JDBCStore store, JDBCFetchConfiguration
fetch, Result res, Joins joins)
                        throws SQLException {
                // TODO Auto-generated method stub
                return null;
        }

        @Override
        public boolean isVersionable() {
                System.out.println("I am inside the isVersionable");
                return false;
        }

        @Override
        public void where(OpenJPAStateManager sm, JDBCStore store, RowManager 
rm,
Object prevValue) throws SQLException {
                // TODO Auto-generated method stub

        }

    }



--
View this message in context: 
http://openjpa.208410.n2.nabble.com/FieldStrategy-found-tp7584021.html
Sent from the OpenJPA Users mailing list archive at Nabble.com.

Reply via email to