Next in thread → Next in month →

RE: [wsrp] What faults to throw when property writes are

From
Andre Kramer <>
Date
2003-04-04T14:17:56+00:00
ID
Thread
RE: [wsrp] What faults to throw when property writes are
I 
mainly agree but see comments below,

 

thanks, 

Andre

  
-----Original Message-----
From: Rich Thompson 
  [mailto:]
Sent: 04 April 2003 14:39
To: 
  
Subject: Re: [wsrp] What faults to throw 
  when property writes are

My opinions are intertwined with <rt/> 

Rich Thompson 

  
    
    

      
      Andre Kramer 
        <> 
        
04/04/2003 03:38 AM 

              
        To:     
            
        cc:       
          
      
          Subject:        [wsrp] What faults to throw 
        when property writes are

  

Yesterday, we said we would continue to use 
  this list for spec &
implementation discussion. So here goes one set of 
  questions I would be
interested to hear people's opinion on:

In 
  section 6.3.3 we say that "the producer MUST throw a fault message if 
  the
processing the interaction requires changing its persistent state" 
  if
"readOnly". We don't say what the fault MUST be. 
  PortletStateChangeRequired
I presume ... 

<rt>We talked about whether to specify the fault to throw and 
  decided to leave it up to the Producer. Interface.PortletStateChangeRequired 
  is certainly a leading candidate.</rt>

[Andre 
  Kramer]  And performBlockingInteraction declares a 
  PortletStateChangeRequired fault...

  

Later, we say that "Interface.PortletStateChangeRequired" MAY be 
  throw if
the "producer implements access control that prevents Portlets 
  from updating
persistent state". Surely that should be a security (Top 
  Level Security.)
exception ;-)

<rt>Why would that be a security exception? The scenario is that 
  a Portlet attempts to write a property that the Producer will not allow it to 
  write. Presumably the Producer informs the Portlet of this with an exception 
  and the Portlet decides whether it can proceed without having changed that 
  property or whether the invocation should fail. If the decision is to fail, 
  this statement encourages (but doesn't require) that the 
  Interface.PortletStateChangedRequired fault message be returned. Of course, it 
  is possible that the Portlet doesn't catch the Producer's exception and the 
  actual fault returned is a serialization of that internal 
  error.</rt>

[Andre Kramer] The words "access control" suggest a 
  security fault. I would hope to not expose internal errors. Also, see 
  last fault below where you suggest 
  Security.AccessDenied.

  
 
Also, 
  what actual fault should be thrown for the following cases (note that
not 
  all the operations declare a throws PortletStateChangeRequired)?

- a 
  Portlet attempts to set a property in getMarkup. 

<rt>Spec prohibits this. The Producer should throw an 
  exception to the Portlet on the attempt.</rt>

Should the producer 
  throw a fault or silently discard the update or generate
an error markup 
  fragment? 

<rt>The Portlet could 
  decide to return a fault instead of markup ... probably OperationFailed. But 
  fundamentally this would be a non-conformant Portlet</rt>
 
[Andre Kramer] I think we should have the 
  producer throw OperationFailed. As we specify producers, how 
  can we talk of non-conformant 
  portlets?

  

- a Consumer attempts to update a preference on a publicly offered 
  portlet.

Should the producer throw a fault or silently discard the 
  update or generate
an error markup fragment? Can we allow  writes in 
  some cases (admin level
consumers)?

<rt>I think a Security.AccessDenied fault message would be 
  appropriate. The detail message should specify that setting properties on 
  Producer Offered Portlets is not allowed.</rt>

[Andre 
  Kramer] OK

  

While we are not required to align all the above, 
  interop and testing would
be improved if we tighten property update fault 
  semantics.

[Andre Kramer] An implication of the above is that 
  PortletStateChangeRequired is likely to be used only 
  for portletState = ReadOnly.

  

regards,
Andre
Next in thread → Next in month →