User: dsundstrom
  Date: 02/02/12 14:35:12

  Modified:    src/main/org/jboss/ejb/plugins/cmp/jdbc/bridge
                        JDBCAbstractCMPFieldBridge.java
                        JDBCCMP1xFieldBridge.java JDBCCMRFieldBridge.java
                        JDBCFieldBridge.java
  Log:
  Fixed code that throws an exception if bean provider attempts to set a
  primary key field out side of ejbCreate or if the bean provider attempts
  to add a bean to a relation inside of ejbCreate.
  
  Revision  Changes    Path
  1.11      +19 -1     
jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/bridge/JDBCAbstractCMPFieldBridge.java
  
  Index: JDBCAbstractCMPFieldBridge.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/bridge/JDBCAbstractCMPFieldBridge.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- JDBCAbstractCMPFieldBridge.java   15 Jan 2002 20:43:56 -0000      1.10
  +++ JDBCAbstractCMPFieldBridge.java   12 Feb 2002 22:35:12 -0000      1.11
  @@ -40,7 +40,7 @@
    *      One for each entity bean cmp field.       
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Dain Sundstrom</a>
  - * @version $Revision: 1.10 $
  + * @version $Revision: 1.11 $
    */                            
   public abstract class JDBCAbstractCMPFieldBridge implements JDBCCMPFieldBridge {
      protected JDBCStoreManager manager;
  @@ -93,6 +93,24 @@
      
      public boolean isPrimaryKeyMember() {
         return metadata.isPrimaryKeyMember();
  +   }
  +
  +   public Object getValue(EntityEnterpriseContext ctx) {
  +      // no user checks yet, but this is where they would go
  +      return getInstanceValue(ctx);
  +   }
  +
  +   public void setValue(EntityEnterpriseContext ctx, Object value) {
  +      if(isReadOnly()) {
  +         throw new EJBException("Field is read-only: " +
  +               "fieldName=" + getFieldName());
  +      }
  +      if(isPrimaryKeyMember() && manager.getEntityBridge().isCreated(ctx)) {
  +         throw new IllegalStateException("A CMP field that is a member " +
  +               "of the primary key can only be set in ejbCreate " +
  +               "[EJB 2.0 Spec. 10.3.5].");
  +      }
  +      setInstanceValue(ctx, value);      
      }
   
      public Object getPrimaryKeyValue(Object primaryKey) 
  
  
  
  1.11      +1 -6      
jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/bridge/JDBCCMP1xFieldBridge.java
  
  Index: JDBCCMP1xFieldBridge.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/bridge/JDBCCMP1xFieldBridge.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- JDBCCMP1xFieldBridge.java 15 Jan 2002 20:48:16 -0000      1.10
  +++ JDBCCMP1xFieldBridge.java 12 Feb 2002 22:35:12 -0000      1.11
  @@ -35,7 +35,7 @@
    *      One for each entity bean cmp field.       
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Dain Sundstrom</a>
  - * @version $Revision: 1.10 $
  + * @version $Revision: 1.11 $
    */                            
   public class JDBCCMP1xFieldBridge extends JDBCAbstractCMPFieldBridge {
      private Field field;
  @@ -72,11 +72,6 @@
      }
      
      public void setInstanceValue(EntityEnterpriseContext ctx, Object value) {
  -      if(isPrimaryKeyMember() && manager.getEntityBridge().isCreated(ctx)) {
  -//         throw new IllegalStateException("A field that is a member " +
  -//               "of the primary key can only be set in ejbCreate");
  -      }
  -      
         try {
            field.set(ctx.getInstance(), value);
   
  
  
  
  1.23      +40 -25    
jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/bridge/JDBCCMRFieldBridge.java
  
  Index: JDBCCMRFieldBridge.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/bridge/JDBCCMRFieldBridge.java,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- JDBCCMRFieldBridge.java   12 Feb 2002 06:17:15 -0000      1.22
  +++ JDBCCMRFieldBridge.java   12 Feb 2002 22:35:12 -0000      1.23
  @@ -53,7 +53,7 @@
    *      One for each role that entity has.       
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Dain Sundstrom</a>
  - * @version $Revision: 1.22 $
  + * @version $Revision: 1.23 $
    */                            
   public class JDBCCMRFieldBridge implements JDBCFieldBridge {
      // ------ Invocation messages ------
  @@ -488,17 +488,34 @@
         return true;
      }
   
  +   public Object getValue(EntityEnterpriseContext ctx) {
  +      // no user checks yet, but this is where they would go
  +      return getInstanceValue(ctx);
  +   }
  +
  +   public void setValue(EntityEnterpriseContext ctx, Object value) {
  +      if(isReadOnly()) {
  +         throw new EJBException("Field is read-only: " +
  +               "fieldName=" + getFieldName());
  +      }
  +      if(!entity.isCreated(ctx)) {
  +         throw new IllegalStateException("A CMR field cannot be set " +
  +               "in ejbCreate; this should be done in the ejbPostCreate " +
  +               "method instead [EJB 2.0 Spec. 10.5.2].");
  +      }
  +      if(isCollectionValued() && value == null) {
  +         throw new IllegalArgumentException("null cannot be assigned to a " +
  +               "collection-valued cmr-field [EJB 2.0 Spec. 10.3.8].");
  +      }
  +      
  +      setInstanceValue(ctx, value);      
  +   }
  +
      /**
       * Gets the value of the cmr field for the instance associated with 
       * the context.
       */
      public Object getInstanceValue(EntityEnterpriseContext myCtx) {
  -      if(!entity.isCreated(myCtx)) {
  -//         throw new IllegalStateException("A CMR field cannot be set " +
  -//               "in ejbCreate; this should be done in the ejbPostCreate " +
  -//               "method instead.");
  -      }
  -
         load(myCtx);
   
         FieldState fieldState = getFieldState(myCtx);
  @@ -528,15 +545,6 @@
      public void setInstanceValue(
            EntityEnterpriseContext myCtx, Object newValue) {
   
  -      if(isReadOnly()) {
  -         throw new EJBException("Field is read-only: " + getFieldName());
  -      }
  -
  -      if(isCollectionValued() && newValue == null) {
  -//         throw new IllegalArgumentException("null cannot be assigned to a " +
  -//               "collection-valued cmr-field [EJB 2.0 Spec. 10.3.8].");
  -      }
  -      
         load(myCtx);
         
         FieldState fieldState = getFieldState(myCtx);
  @@ -740,7 +748,7 @@
         if(!entity.isCreated(myCtx)) {
            throw new IllegalStateException("A CMR field cannot be set or added " +
                  "to a relationship in ejbCreate; this should be done in the " +
  -               "ejbPostCreate method instead.");
  +               "ejbPostCreate method instead [EJB 2.0 Spec. 10.5.2].");
         }
   
         load(myCtx);
  @@ -815,9 +823,11 @@
         }
         
         // check the preload cache
  -      log.debug("Read ahead cahce load:"+
  -         " cmrField="+getFieldName()+
  -         " pk="+myCtx.getId());
  +      if(log.isDebugEnabled()) {
  +         log.debug("Read ahead cahce load:"+
  +               " cmrField="+getFieldName()+
  +               " pk="+myCtx.getId());
  +      }
         manager.getReadAheadCache().load(myCtx);
         if(fieldState.isLoaded()) {
            return;
  @@ -847,7 +857,10 @@
         fieldState.setLoaded(true);
      }
   
  -   public void loadPreloadedValue(EntityEnterpriseContext myCtx, Collection values) 
{
  +   public void loadPreloadedValue(
  +         EntityEnterpriseContext myCtx,
  +         Collection values) {
  +
         if(isSingleValued() && values.size() > 1) {
            throw new EJBException("Preload data contains multiple values, but " +
                  "this cmr field is single valued");
  @@ -874,10 +887,12 @@
         // mark the field loaded
         fieldState.setLoaded(true);
         
  -      log.debug("Preloaded value: "+
  -            " cmrField="+getFieldName()+
  -            " pk="+myCtx.getId()+
  -            " values="+values);
  +      if(log.isDebugEnabled()) {
  +         log.debug("Preloaded value: "+
  +               " cmrField="+getFieldName()+
  +               " pk="+myCtx.getId()+
  +               " values="+values);
  +      }
      }
      
      /**
  
  
  
  1.2       +20 -0     
jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/bridge/JDBCFieldBridge.java
  
  Index: JDBCFieldBridge.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/bridge/JDBCFieldBridge.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- JDBCFieldBridge.java      15 Jan 2002 20:46:29 -0000      1.1
  +++ JDBCFieldBridge.java      12 Feb 2002 22:35:12 -0000      1.2
  @@ -27,6 +27,12 @@
      public boolean isPrimaryKeyMember();
   
      /**
  +    * Is this field read only.
  +    * @return true if this field is read only
  +    */ 
  +   public boolean isReadOnly();
  +      
  +   /**
       * Has current data read timed out?
       */
      public boolean isReadTimedOut(EntityEnterpriseContext ctx);
  @@ -54,6 +60,20 @@
            PreparedStatement ps, 
            int parameterIndex,
            EntityEnterpriseContext ctx);
  +
  +   /**
  +    * Gets the internal value of this field without user level checks.
  +    * @param ctx the context for which this field's value should be fetched
  +    * @return the value of this field
  +    */
  +   public Object getInstanceValue(EntityEnterpriseContext ctx);
  +      
  +   /**
  +    * Sets the internal value of this field without user level checks.
  +    * @param ctx the context for which this field's value should be set
  +    * @param value the new value of this field
  +    */
  +   public void setInstanceValue(EntityEnterpriseContext ctx, Object value);
   
      /**
       * Loads the data from result set into the instance associated with 
  
  
  

_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to