File Source: RollerUserHandler.java

         /* 
    P/P   *  Method: org.apache.roller.weblogger.webservices.adminprotocol.RollerUserHandler__static_init
          */
     1  /*
     2   * Licensed to the Apache Software Foundation (ASF) under one or more
     3   *  contributor license agreements.  The ASF licenses this file to You
     4   * under the Apache License, Version 2.0 (the "License"); you may not
     5   * use this file except in compliance with the License.
     6   * You may obtain a copy of the License at
     7   *
     8   *     http://www.apache.org/licenses/LICENSE-2.0
     9   *
    10   * Unless required by applicable law or agreed to in writing, software
    11   * distributed under the License is distributed on an "AS IS" BASIS,
    12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13   * See the License for the specific language governing permissions and
    14   * limitations under the License.  For additional information regarding
    15   * copyright in this work, please see the NOTICE file in the top level
    16   * directory of this distribution.
    17   */
    18  package org.apache.roller.weblogger.webservices.adminprotocol;
    19  
    20  import java.io.IOException;
    21  import java.io.Reader;
    22  import java.util.ArrayList;
    23  import java.util.List;
    24  import java.util.Date;
    25  import javax.servlet.http.HttpServletRequest;
    26  import org.jdom.Document;
    27  import org.jdom.JDOMException;
    28  import org.apache.roller.weblogger.WebloggerException;
    29  import org.apache.roller.weblogger.business.UserManager;
    30  import org.apache.roller.weblogger.pojos.User;
    31  import org.apache.roller.weblogger.util.cache.CacheManager;
    32  import org.apache.roller.weblogger.webservices.adminprotocol.sdk.Entry;
    33  import org.apache.roller.weblogger.webservices.adminprotocol.sdk.EntrySet;
    34  import org.apache.roller.weblogger.webservices.adminprotocol.sdk.UnexpectedRootElementException;
    35  import org.apache.roller.weblogger.webservices.adminprotocol.sdk.UserEntry;
    36  import org.apache.roller.weblogger.webservices.adminprotocol.sdk.UserEntrySet;
    37  
    38  /**
    39   * This class handles request concerning Roller users.
    40   *
    41   * @author jtb
    42   */
    43  class RollerUserHandler extends Handler {
    44      public RollerUserHandler(HttpServletRequest request) throws HandlerException {
                 /* 
    P/P           *  Method: void org.apache.roller.weblogger.webservices.adminprotocol.RollerUserHandler(HttpServletRequest)
                  * 
                  *  Preconditions:
                  *    request != null
                  *    (soft) org/apache/roller/weblogger/webservices/adminprotocol/Handler$URI.PATHINFO_PATTERN != null
                  * 
                  *  Postconditions:
                  *    init'ed(java.lang.String:substring(...)._tainted)
                  *    java.lang.StringBuilder:toString(...)._tainted == 0
                  *    this.request == request
                  *    this.request != null
                  *    init'ed(this.roller)
                  *    this.uri == &new Handler$URI(Handler#1)
                  *    this.urlPrefix == &java.lang.StringBuilder:toString(...)
                  *    this.userName == One-of{null, &java.lang.String:substring(...)}
                  *    this.userName in Addr_Set{null,&java.lang.String:substring(...)}
                  *    new Handler$URI(Handler#1) num objects == 1
                  *    ...
                  */
    45          super(request);
    46      }
    47      
    48      protected EntrySet getEntrySet(Document d) throws UnexpectedRootElementException {
                 /* 
    P/P           *  Method: EntrySet getEntrySet(Document)
                  * 
                  *  Preconditions:
                  *    d != null
                  *    init'ed(this.urlPrefix)
                  * 
                  *  Postconditions:
                  *    init'ed(java.lang.StringBuilder:toString(...)._tainted)
                  *    return_value == &new UserEntrySet(getEntrySet#1)
                  *    new UserEntrySet(getEntrySet#1) num objects == 1
                  *    init'ed(return_value.entries)
                  *    return_value.href == &java.lang.StringBuilder:toString(...)
                  */
    49          return new UserEntrySet(d, getUrlPrefix());
    50      }
    51      
    52      public EntrySet processGet() throws HandlerException {
                 /* 
    P/P           *  Method: EntrySet processGet()
                  * 
                  *  Preconditions:
                  *    this.roller != null
                  *    this.uri != null
                  *    init'ed(this.uri.entryId)
                  *    init'ed(this.urlPrefix)
                  *    (soft) this.uri.type != null
                  * 
                  *  Postconditions:
                  *    init'ed(java.lang.StringBuilder:toString(...)._tainted)
                  *    return_value == &new UserEntrySet(toUserEntrySet#1)
                  *    new UserEntrySet(toUserEntrySet#1) num objects == 1
                  *    possibly_updated(new UserEntrySet(toUserEntrySet#1).entries)
                  *    possibly_updated(new UserEntrySet(toUserEntrySet#1).href)
                  * 
                  *  Test Vectors:
                  *    !(this.uri.entryId == null) | (this.uri.type == null & this.uri.entryId == null): {1}, {0}
                  *    !(this.uri.type == null) & this.uri.entryId == null: {0}, {1}
                  *    this.uri.entryId: Inverse{null}, Addr_Set{null}
                  */
    53          if (getUri().isCollection()) {
    54              return getCollection();
    55          } else if (getUri().isEntry()) {
    56              return getEntry();
    57          } else {
    58              throw new BadRequestException("ERROR: Unknown GET URI type");
    59          }
    60      }
    61      
    62      public EntrySet processPost(Reader r) throws HandlerException {
                 /* 
    P/P           *  Method: EntrySet processPost(Reader)
                  * 
                  *  Preconditions:
                  *    this.uri != null
                  *    this.uri.entryId == null
                  *    (soft) this.uri.type != null
                  * 
                  *  Postconditions:
                  *    java.lang.StringBuilder:toString(...)._tainted == 0
                  *    init'ed(return_value)
                  *    new UserEntrySet(toUserEntrySet#1) num objects == undefined
                  *    new UserEntrySet(toUserEntrySet#1) num objects == 0, if init'ed
                  *    new UserEntrySet(toUserEntrySet#1).entries == undefined
                  *    new UserEntrySet(toUserEntrySet#1).entries == null
                  *    new UserEntrySet(toUserEntrySet#1).href == new UserEntrySet(toUserEntrySet#1).entries
                  */
    63          if (getUri().isCollection()) {
    64              return postCollection(r);
    65          } else {
    66              throw new BadRequestException("ERROR: Unknown POST URI type");
    67          }
    68      }
    69      
    70      public EntrySet processPut(Reader r) throws HandlerException {
                 /* 
    P/P           *  Method: EntrySet processPut(Reader)
                  * 
                  *  Preconditions:
                  *    this.uri != null
                  *    init'ed(this.uri.entryId)
                  *    (soft) this.uri.type != null
                  * 
                  *  Postconditions:
                  *    java.lang.StringBuilder:toString(...)._tainted == 0
                  *    init'ed(return_value)
                  *    new UserEntrySet(toUserEntrySet#1) num objects == undefined
                  *    new UserEntrySet(toUserEntrySet#1) num objects == 0, if init'ed
                  *    new UserEntrySet(toUserEntrySet#1).entries == undefined
                  *    new UserEntrySet(toUserEntrySet#1).entries == null
                  *    new UserEntrySet(toUserEntrySet#1).href == new UserEntrySet(toUserEntrySet#1).entries
                  * 
                  *  Test Vectors:
                  *    !(this.uri.entryId == null) | (this.uri.type == null & this.uri.entryId == null): {1}, {0}
                  *    !(this.uri.type == null) & this.uri.entryId == null: {0}, {1}
                  *    this.uri.entryId: Inverse{null}, Addr_Set{null}
                  */
    71          if (getUri().isCollection()) {
    72              return putCollection(r);
    73          } else if (getUri().isEntry()) {
    74              return putEntry(r);
    75          } else {
    76              throw new BadRequestException("ERROR: Unknown PUT URI type");
    77          }
    78      }
    79      
    80      public EntrySet processDelete() throws HandlerException {
                 /* 
    P/P           *  Method: EntrySet processDelete()
                  * 
                  *  Preconditions:
                  *    this.roller != null
                  *    this.uri != null
                  *    this.uri.entryId != null
                  *    init'ed(this.urlPrefix)
                  *    init'ed(this.userName)
                  *    (soft) this.uri.type != null
                  * 
                  *  Postconditions:
                  *    init'ed(java.lang.StringBuilder:toString(...)._tainted)
                  *    return_value == &new UserEntrySet(toUserEntrySet#1)
                  *    new UserEntrySet(toUserEntrySet#1) num objects == 1
                  *    init'ed(new UserEntrySet(toUserEntrySet#1).entries)
                  *    new UserEntrySet(toUserEntrySet#1).href == &java.lang.StringBuilder:toString(...)
                  */
    81          if (getUri().isEntry()) {
    82              return deleteEntry();
    83          } else {
    84              throw new BadRequestException("ERROR: Unknown DELETE URI type");
    85          }
    86      }
    87      
    88      private EntrySet getCollection() throws HandlerException {
    89          try {
                     /* 
    P/P               *  Method: EntrySet getCollection()
                      * 
                      *  Preconditions:
                      *    this.roller != null
                      *    init'ed(this.urlPrefix)
                      * 
                      *  Presumptions:
                      *    init'ed(java.util.Collections.EMPTY_LIST)
                      *    java.util.List:toArray(...).length@94 <= 232-1
                      *    java.util.List:toArray(...)@94 != null
                      *    org.apache.roller.weblogger.business.Weblogger:getUserManager(...)@90 != null
                      * 
                      *  Postconditions:
                      *    init'ed(java.lang.StringBuilder:toString(...)._tainted)
                      *    return_value == &new UserEntrySet(toUserEntrySet#1)
                      *    new UserEntrySet(toUserEntrySet#1) num objects == 1
                      *    init'ed(new UserEntrySet(toUserEntrySet#1).entries)
                      *    new UserEntrySet(toUserEntrySet#1).href == &java.lang.StringBuilder:toString(...)
                      * 
                      *  Test Vectors:
                      *    org.apache.roller.weblogger.business.UserManager:getUsers(...)@90: Inverse{null}, Addr_Set{null}
                      */
    90              List users = getRoller().getUserManager().getUsers(null, null, null, null, 0, -1);
    91              if (users == null) {
    92                  users = java.util.Collections.EMPTY_LIST;
    93              }
    94              EntrySet es = toUserEntrySet((User[])users.toArray(new User[0]));
    95              
    96              return es;
    97          } catch (WebloggerException re) {
    98              throw new InternalException("ERROR: Could not get user collection", re);
    99          }
   100      }
   101      
   102      private EntrySet getEntry() throws HandlerException {
                 /* 
    P/P           *  Method: EntrySet getEntry()
                  * 
                  *  Preconditions:
                  *    this.roller != null
                  *    this.uri != null
                  *    init'ed(this.uri.entryId)
                  *    init'ed(this.urlPrefix)
                  * 
                  *  Postconditions:
                  *    java.lang.StringBuilder:toString(...)._tainted == this.urlPrefix._tainted
                  *    init'ed(java.lang.StringBuilder:toString(...)._tainted)
                  *    return_value == &new UserEntrySet(toUserEntrySet#1)
                  *    new UserEntrySet(toUserEntrySet#1) num objects == 1
                  *    init'ed(new UserEntrySet(toUserEntrySet#1).entries)
                  *    new UserEntrySet(toUserEntrySet#1).href == &java.lang.StringBuilder:toString(...)
                  */
   103          User ud = getUserData(getUri().getEntryId());
   104          User[] uds = new User[] { ud };
   105          
   106          EntrySet c = toUserEntrySet(uds);
   107          return c;
   108      }
   109      
   110      private EntrySet postCollection(Reader r) throws HandlerException {
                 /* 
    P/P           *  Method: EntrySet postCollection(Reader)
                  * 
                  *  Preconditions:
                  *    this.roller != null
                  *    init'ed(this.urlPrefix)
                  * 
                  *  Presumptions:
                  *    c.entries@111 != null
                  *    c.entries@112 != null
                  *    java.util.List:size(...)@82 != 0
                  * 
                  *  Postconditions:
                  *    init'ed(java.lang.StringBuilder:toString(...)._tainted)
                  *    return_value == &new UserEntrySet(toUserEntrySet#1)
                  *    new MemberEntrySet(getEntrySet#1*) num objects == 0
                  *    new MemberEntrySet(getEntrySet#1*)._tainted == 0
                  *    new UserEntrySet(getEntrySet#1*)._tainted == 0
                  *    new WeblogEntrySet(getEntrySet#1*)._tainted == 0
                  *    init'ed(new MemberEntrySet(getEntrySet#1*).entries)
                  *    init'ed(new MemberEntrySet(getEntrySet#1*).href)
                  *    new UserEntrySet(getEntrySet#1*) num objects == 1
                  *    init'ed(new UserEntrySet(getEntrySet#1*).entries)
                  *    ...
                  */
   111          EntrySet c = getEntrySet(r);
+  112          if (c.isEmpty()) {
   113              throw new BadRequestException("ERROR: No entries");
   114          }
   115          c = createUsers((UserEntrySet)c);
   116          
   117          return c;
   118      }
   119      
   120      private EntrySet putCollection(Reader r) throws HandlerException {
                 /* 
    P/P           *  Method: EntrySet putCollection(Reader)
                  * 
                  *  Preconditions:
                  *    init'ed(this.urlPrefix)
                  *    (soft) this.roller != null
                  * 
                  *  Presumptions:
                  *    c.entries@121 != null
                  *    c.entries@122 != null
                  *    java.util.List:size(...)@82 != 0
                  * 
                  *  Postconditions:
                  *    java.lang.StringBuilder:toString(...)._tainted == this.urlPrefix._tainted
                  *    init'ed(java.lang.StringBuilder:toString(...)._tainted)
                  *    return_value == &new UserEntrySet(toUserEntrySet#1)
                  *    new MemberEntrySet(getEntrySet#1*) num objects == 0
                  *    init'ed(new MemberEntrySet(getEntrySet#1*).entries)
                  *    init'ed(new MemberEntrySet(getEntrySet#1*).href)
                  *    new UserEntrySet(getEntrySet#1*) num objects == 1
                  *    init'ed(new UserEntrySet(getEntrySet#1*).entries)
                  *    init'ed(new UserEntrySet(getEntrySet#1*).href)
                  *    new UserEntrySet(toUserEntrySet#1) num objects == 1
                  *    ...
                  */
   121          EntrySet c = getEntrySet(r);
+  122          if (c.isEmpty()) {
   123              throw new BadRequestException("ERROR: No entries");
   124          }
   125          c = updateUsers((UserEntrySet)c);
   126          
   127          return c;
   128      }
   129      
   130      private EntrySet putEntry(Reader r) throws HandlerException {
                 /* 
    P/P           *  Method: EntrySet putEntry(Reader)
                  * 
                  *  Preconditions:
                  *    this.uri != null
                  *    init'ed(this.uri.entryId)
                  *    init'ed(this.urlPrefix)
                  *    (soft) this.roller != null
                  * 
                  *  Presumptions:
                  *    c.entries@131 != null
                  *    c.entries@132 != null
                  *    c.entries@135 != null
                  *    c.entries@139 != null
                  *    getEntries(...).length@135 <= 1
                  *    ...
                  * 
                  *  Postconditions:
                  *    java.lang.StringBuilder:toString(...)._tainted == this.urlPrefix._tainted
                  *    init'ed(java.lang.StringBuilder:toString(...)._tainted)
                  *    return_value == &new UserEntrySet(toUserEntrySet#1)
                  *    new MemberEntrySet(getEntrySet#1*) num objects == 0
                  *    init'ed(new MemberEntrySet(getEntrySet#1*).entries)
                  *    init'ed(new MemberEntrySet(getEntrySet#1*).href)
                  *    new UserEntrySet(getEntrySet#1*) num objects == 1
                  *    init'ed(new UserEntrySet(getEntrySet#1*).entries)
                  *    init'ed(new UserEntrySet(getEntrySet#1*).href)
                  *    new UserEntrySet(toUserEntrySet#1) num objects == 1
                  *    ...
                  */
   131          EntrySet c = getEntrySet(r);
+  132          if (c.isEmpty()) {
   133              throw new BadRequestException("ERROR: No entries");
   134          }
   135          if (c.getEntries().length > 1) {
   136              throw new BadRequestException("ERROR: Cannot put >1 entries per request");
   137          }
   138          
   139          UserEntry entry = (UserEntry)c.getEntries()[0];
+  140          if (entry.getName() != null && !entry.getName().equals(getUri().getEntryId())) {
   141              throw new BadRequestException("ERROR: Content name does not match URI name");
   142          }
+  143          entry.setName(getUri().getEntryId());
   144          c = updateUsers((UserEntrySet)c);
   145          
   146          return c;
   147      }
   148      
   149      private UserEntrySet createUsers(UserEntrySet c) throws HandlerException {
   150          try {
                     /* 
    P/P               *  Method: UserEntrySet createUsers(UserEntrySet)
                      * 
                      *  Preconditions:
                      *    c != null
                      *    c.entries != null
                      *    this.roller != null
                      *    init'ed(this.urlPrefix)
                      * 
                      *  Presumptions:
                      *    getEntries(...).length@154 <= 232-1
                      *    getEntries(...).length@155 >= 1
                      *    getEntries(...).length@154 <= getEntries(...).length@155
                      *    java.util.List:toArray(...).length@166 <= 232-1
                      *    java.util.List:toArray(...)@166 != null
                      *    ...
                      * 
                      *  Postconditions:
                      *    init'ed(java.lang.StringBuilder:toString(...)._tainted)
                      *    return_value == &new UserEntrySet(toUserEntrySet#1)
                      *    new UserEntrySet(toUserEntrySet#1) num objects == 1
                      *    init'ed(new UserEntrySet(toUserEntrySet#1).entries)
                      *    new UserEntrySet(toUserEntrySet#1).href == &java.lang.StringBuilder:toString(...)
                      * 
                      *  Test Vectors:
                      *    getEntries(...).length@154: {1..232-1}, {0}
                      */
   151              UserManager mgr = getRoller().getUserManager();
   152              
   153              List userDatas = new ArrayList();
   154              for (int i = 0; i < c.getEntries().length; i++) {
   155                  UserEntry entry = (UserEntry)c.getEntries()[i];
+  156                  if (entry.getDateCreated() == null) {
   157                      // if no creation date supplied, add it
+  158                      entry.setDateCreated(new Date());
   159                  }
+  160                  User ud = toUserData(entry);
   161                  mgr.addUser(ud);
   162                  getRoller().flush();
   163                  CacheManager.invalidate(ud);
   164                  userDatas.add(ud);
   165              }
   166              return toUserEntrySet((User[])userDatas.toArray(new User[0]));
   167          } catch (WebloggerException re) {
   168              throw new InternalException("ERROR: Could not create users: " + c, re);
   169          }
   170      }
   171          
   172      private UserEntrySet updateUsers(UserEntrySet c) throws HandlerException {
                 /* 
    P/P           *  Method: UserEntrySet updateUsers(UserEntrySet)
                  * 
                  *  Preconditions:
                  *    c != null
                  *    c.entries != null
                  *    init'ed(this.urlPrefix)
                  *    (soft) this.roller != null
                  * 
                  *  Presumptions:
                  *    getEntries(...).length@174 <= 232-1
                  *    getEntries(...).length@175 >= 1
                  *    getEntries(...).length@174 <= getEntries(...).length@175
                  *    java.util.List:toArray(...).length@180 <= 232-1
                  *    java.util.List:toArray(...)@180 != null
                  *    ...
                  * 
                  *  Postconditions:
                  *    java.lang.StringBuilder:toString(...)._tainted == this.urlPrefix._tainted
                  *    init'ed(java.lang.StringBuilder:toString(...)._tainted)
                  *    return_value == &new UserEntrySet(toUserEntrySet#1)
                  *    new UserEntrySet(toUserEntrySet#1) num objects == 1
                  *    init'ed(new UserEntrySet(toUserEntrySet#1).entries)
                  *    new UserEntrySet(toUserEntrySet#1).href == &java.lang.StringBuilder:toString(...)
                  */
   173          List userDatas = new ArrayList();
   174          for (int i = 0; i < c.getEntries().length; i++) {
   175              UserEntry entry = (UserEntry)c.getEntries()[i];
+  176              User ud = getUserData(entry.getName());
+  177              updateUserData(ud, entry);
   178              userDatas.add(ud);
   179          }
   180          return toUserEntrySet((User[])userDatas.toArray(new User[0]));
   181      }
   182      
   183      private void updateUserData(User ud, UserEntry entry) throws HandlerException {
   184          // user name cannot be updated
   185  
                 /* 
    P/P           *  Method: void updateUserData(User, UserEntry)
                  * 
                  *  Preconditions:
                  *    entry != null
                  *    init'ed(entry.emailAddress)
                  *    init'ed(entry.enabled)
                  *    init'ed(entry.fullName)
                  *    init'ed(entry.locale)
                  *    init'ed(entry.password)
                  *    init'ed(entry.screenName)
                  *    init'ed(entry.timezone)
                  *    this.roller != null
                  *    (soft) ud != null
                  * 
                  *  Presumptions:
                  *    org.apache.roller.weblogger.business.Weblogger:getUserManager(...)@209 != null
                  * 
                  *  Test Vectors:
                  *    entry.emailAddress: Addr_Set{null}, Inverse{null}
                  *    entry.enabled: Addr_Set{null}, Inverse{null}
                  *    entry.fullName: Addr_Set{null}, Inverse{null}
                  *    entry.locale: Addr_Set{null}, Inverse{null}
                  *    entry.password: Addr_Set{null}, Inverse{null}
                  *    entry.screenName: Addr_Set{null}, Inverse{null}
                  *    entry.timezone: Addr_Set{null}, Inverse{null}
                  */
   186          if (entry.getScreenName() != null) {
   187              ud.setScreenName(entry.getScreenName());
   188          }
   189          if (entry.getFullName() != null) {
   190              ud.setFullName(entry.getFullName());
   191          }
   192          if (entry.getPassword() != null) {
   193              ud.setPassword(entry.getPassword());
   194          }
   195          if (entry.getLocale() != null) {
   196              ud.setLocale(entry.getLocale().toString());
   197          }
   198          if (entry.getTimezone() != null) {
   199              ud.setTimeZone(entry.getTimezone().getID());
   200          }
   201          if (entry.getEmailAddress() != null) {
   202              ud.setEmailAddress(entry.getEmailAddress());
   203          }
   204          if (entry.getEnabled() != null) {
   205              ud.setEnabled(entry.getEnabled());
   206          }
   207          
   208          try {
   209              UserManager mgr = getRoller().getUserManager();
   210              mgr.saveUser(ud);
   211              getRoller().flush();
   212              CacheManager.invalidate(ud);
   213          } catch (WebloggerException re) {
   214              throw new InternalException("ERROR: could not update user data", re);
   215          }
   216      }
   217      
   218      private EntrySet deleteEntry() throws HandlerException {
                 /* 
    P/P           *  Method: EntrySet deleteEntry()
                  * 
                  *  Preconditions:
                  *    this.roller != null
                  *    this.uri != null
                  *    init'ed(this.uri.entryId)
                  *    init'ed(this.urlPrefix)
                  *    init'ed(this.userName)
                  * 
                  *  Presumptions:
                  *    java.lang.String:equals(...)@222 == 0
                  *    org.apache.roller.weblogger.business.Weblogger:getUserManager(...)@229 != null
                  *    org.apache.roller.weblogger.pojos.User:getUserName(...)@222 != null
                  * 
                  *  Postconditions:
                  *    init'ed(java.lang.StringBuilder:toString(...)._tainted)
                  *    return_value == &new UserEntrySet(toUserEntrySet#1)
                  *    new UserEntrySet(toUserEntrySet#1) num objects == 1
                  *    init'ed(new UserEntrySet(toUserEntrySet#1).entries)
                  *    new UserEntrySet(toUserEntrySet#1).href == &java.lang.StringBuilder:toString(...)
                  */
   219          User ud = getUserData(getUri().getEntryId());
   220          
   221          // don't allow deletion of the currently authenticated user
   222          if (ud.getUserName().equals(getUserName())) {
   223              throw new NotAllowedException("ERROR: Can't delete authenticated user: " + getUserName());
   224          }  
   225          
   226          try {
   227              CacheManager.invalidate(ud);
   228  
   229              getRoller().getUserManager().removeUser(ud);
   230              getRoller().flush();
   231              
   232          } catch (WebloggerException re) {
   233              throw new InternalException("ERROR: could not delete user data", re);
   234          }
   235          
   236          // return empty set, entry was deleted
   237          User[] uds = new User[0];
   238          EntrySet es = toUserEntrySet(uds);
   239          return es;
   240      }
   241      
   242      private UserEntry toUserEntry(User ud) {
                 /* 
    P/P           *  Method: UserEntry toUserEntry(User)
                  * 
                  *  Preconditions:
                  *    init'ed(this.urlPrefix)
                  *    ud != null
                  * 
                  *  Presumptions:
                  *    org.apache.roller.weblogger.pojos.User:getLocale(...)@253 == null
                  * 
                  *  Postconditions:
                  *    java.lang.StringBuilder:toString(...)._tainted == this.urlPrefix._tainted
                  *    init'ed(java.lang.StringBuilder:toString(...)._tainted)
                  *    return_value == &new UserEntry(toUserEntry#1)
                  *    new Locale(LocaleString#1) num objects == 0
                  *    new Locale(LocaleString#2) num objects == 0
                  *    new Locale(LocaleString#3) num objects == 0
                  *    new UserEntry(toUserEntry#1) num objects == 1
                  *    init'ed(return_value.dateCreated)
                  *    init'ed(return_value.emailAddress)
                  *    init'ed(return_value.enabled)
                  *    ...
                  */
   243          if (ud == null) {
   244              throw new NullPointerException("ERROR: Null user data not allowed");
   245          }
   246          
   247          // password field is not set
   248          // we never return password field
   249          
   250          UserEntry ue = new UserEntry(ud.getUserName(), getUrlPrefix());
   251          ue.setScreenName(ud.getScreenName());
   252          ue.setFullName(ud.getFullName());
   253          ue.setLocale(ud.getLocale());
   254          ue.setTimezone(ud.getTimeZone());
   255          ue.setEmailAddress(ud.getEmailAddress());
   256          ue.setDateCreated(ud.getDateCreated());
   257          ue.setEnabled(ud.getEnabled());
   258          
   259          return ue;
   260      }
   261      
   262      private UserEntrySet toUserEntrySet(User[] uds) {
                 /* 
    P/P           *  Method: UserEntrySet toUserEntrySet(User[])
                  * 
                  *  Preconditions:
                  *    init'ed(this.urlPrefix)
                  *    uds != null
                  *    uds.length <= 232-1
                  *    (soft) uds[...] != null
                  * 
                  *  Postconditions:
                  *    java.lang.StringBuilder:toString(...)._tainted == this.urlPrefix._tainted
                  *    init'ed(java.lang.StringBuilder:toString(...)._tainted)
                  *    return_value == &new UserEntrySet(toUserEntrySet#1)
                  *    new UserEntrySet(toUserEntrySet#1) num objects == 1
                  *    init'ed(return_value.entries)
                  *    return_value.href == &java.lang.StringBuilder:toString(...)
                  */
   263          if (uds == null) {
   264              throw new NullPointerException("ERROR: Null user data not allowed");
   265          }
   266          UserEntrySet ues = new UserEntrySet(getUrlPrefix());
   267          
   268          List entries = new ArrayList();
   269          for (int i = 0; i < uds.length; i++) {
   270              User ud = uds[i];
+  271              Entry entry = toUserEntry(ud);
   272              entries.add(entry);
   273          }
   274          ues.setEntries((Entry[])entries.toArray(new Entry[0]));
   275          
   276          return ues;
   277      }
   278      
   279      /**
   280       * This object, as a Roller User object.
   281       */
   282      public User toUserData(UserEntry ue) {
                 /* 
    P/P           *  Method: User toUserData(UserEntry)
                  * 
                  *  Preconditions:
                  *    ue != null
                  *    init'ed(ue.dateCreated)
                  *    init'ed(ue.emailAddress)
                  *    init'ed(ue.enabled)
                  *    init'ed(ue.fullName)
                  *    init'ed(ue.locale)
                  *    init'ed(ue.name)
                  *    init'ed(ue.password)
                  *    init'ed(ue.screenName)
                  *    init'ed(ue.timezone)
                  * 
                  *  Postconditions:
                  *    return_value == &new User(toUserData#1)
                  *    new User(toUserData#1) num objects == 1
                  * 
                  *  Test Vectors:
                  *    ue.dateCreated: Addr_Set{null}, Inverse{null}
                  *    ue.emailAddress: Addr_Set{null}, Inverse{null}
                  *    ue.enabled: Addr_Set{null}, Inverse{null}
                  *    ue.fullName: Addr_Set{null}, Inverse{null}
                  *    ue.locale: Addr_Set{null}, Inverse{null}
                  *    ue.password: Addr_Set{null}, Inverse{null}
                  *    ue.screenName: Addr_Set{null}, Inverse{null}
                  *    ue.timezone: Addr_Set{null}, Inverse{null}
                  */
   283          if (ue == null) {
   284              throw new NullPointerException("ERROR: Null user entry not allowed");
   285          }
   286          
   287          //
   288          // if any of the entry fields are null, the set below amounts
   289          // to a no-op.
   290          //
   291          User ud = new User();
   292          ud.setUserName(ue.getName());
   293  
   294          if (ue.getScreenName() != null) {
   295              ud.setScreenName(ue.getScreenName());
   296          }
   297          if (ue.getFullName() != null) {
   298              ud.setFullName(ue.getFullName());
   299          }
   300          if (ue.getPassword() != null) {
   301              ud.setPassword(ue.getPassword());
   302          }
   303          if (ue.getEmailAddress() != null) {
   304              ud.setEmailAddress(ue.getEmailAddress());
   305          }
   306          if (ue.getLocale() != null) {
   307              ud.setLocale(ue.getLocale().toString());
   308          }
   309          if (ue.getTimezone() != null) {
   310              ud.setTimeZone(ue.getTimezone().getID());
   311          }
   312          if (ue.getDateCreated() != null) {
   313              ud.setDateCreated(ue.getDateCreated());
   314          }
   315          if (ue.getEnabled() != null) {
   316              ud.setEnabled(ue.getEnabled());
   317          }
   318          return ud;
   319      }
   320  }
   321  








SofCheck Inspector Build Version : 2.18479
RollerUserHandler.java 2009-Jan-02 14:25:14
RollerUserHandler.class 2009-Sep-04 03:12:46