package com.box.sdk;

import java.text.ParseException;
import java.util.Date;

import com.eclipsesource.json.JsonObject;
import com.eclipsesource.json.JsonValue;

public abstract class BoxCollaborator extends BoxResource {
    public BoxCollaborator(BoxAPIConnection api, String id) {
        super(api, id);
    }

    public abstract class Info<T extends BoxCollaborator> extends BoxResource.Info<T> {
        private String name;
        private Date createdAt;
        private Date modifiedAt;

        public Info() {
            super();
        }

        public Info(String json) {
            super(json);
        }

        protected Info(JsonObject jsonObject) {
            super(jsonObject);
        }

        public String name() {
            return this.name;
        }

        public void setName(String name) {
            this.name = name;
            this.addPendingChange("name", name);
        }

        public Date getCreatedAt() {
            return this.createdAt;
        }

        public Date getModifiedAt() {
            return this.modifiedAt;
        }

        @Override
        protected void parseJSONMember(JsonObject.Member member) {
            super.parseJSONMember(member);

            try {
                JsonValue value = member.getValue();
                switch (member.getName()) {
                    case "name":
                        this.name = value.asString();
                        break;
                    case "created_at":
                        this.createdAt = BoxDateParser.parse(value.asString());
                        break;
                    case "modified_at":
                        this.modifiedAt = BoxDateParser.parse(value.asString());
                        break;
                    default:
                        break;
                }
            } catch (ParseException e) {
                assert false : "A ParseException indicates a bug in the SDK.";
            }
        }
    }
}

@@ -160,560 +160,1502 @@
 e;%0A%0A
-public abstract class BoxCollaborator extends BoxResource %7B%0A    public BoxCollaborator(BoxAPIConnection api, String id) %7B%0A        super(api, id);%0A    %7D%0A%0A    public abstract class Info%3CT extends BoxCollaborator%3E extends BoxResource.Info%3CT%3E %7B%0A        private String name;%0A        private Date createdAt;%0A        private Date modifiedAt;%0A%0A        public Info() %7B%0A            super();%0A        %7D%0A%0A        public Info(String json) %7B%0A            super(json);%0A        %7D%0A%0A        protected Info(JsonObject jsonObject) %7B%0A            super(jsonObject);%0A        %7D%0A
+/**%0A * The abstract base class for types that can be added to collaborations.%0A */%0Apublic abstract class BoxCollaborator extends BoxResource %7B%0A%0A    /**%0A     * Constructs a BoxCollaborator for a collaborator with a given ID.%0A     * @param  api the API connection to be used by the collaborator.%0A     * @param  id  the ID of the collaborator.%0A     */%0A    public BoxCollaborator(BoxAPIConnection api, String id) %7B%0A        super(api, id);%0A    %7D%0A%0A    /**%0A     * Contains additional information about a BoxCollaborator.%0A     *%0A     * @param %3CT%3E the type of the collaborator associated with this info.%0A     */%0A    public abstract class Info%3CT extends BoxCollaborator%3E extends BoxResource.Info%3CT%3E %7B%0A        private String name;%0A        private Date createdAt;%0A        private Date modifiedAt;%0A%0A        /**%0A         * Constructs an empty Info object.%0A         */%0A        public Info() %7B%0A            super();%0A        %7D%0A%0A        /**%0A         * Constructs an Info object by parsing information from a JSON string.%0A         * @param  json the JSON string to parse.%0A         */%0A        public Info(String json) %7B%0A            super(json);%0A        %7D%0A%0A        /**%0A         * Constructs an Info object using an already parsed JSON object.%0A         * @param  jsonObject the parsed JSON object.%0A         */%0A        protected Info(JsonObject jsonObject) %7B%0A            super(jsonObject);%0A        %7D%0A%0A        /**%0A         * Gets the name of the collaborator.%0A         * @return the name of the collaborator.%0A         */
 %0A   
@@ -1673,17 +1673,20 @@
  String 
-n
+getN
 ame() %7B%0A
@@ -1718,32 +1718,159 @@
 ame;%0A        %7D%0A%0A
+        /**%0A         * Sets the name of the collaborator.%0A         * @param name the new name of the collaborator.%0A         */%0A
         public v
@@ -1998,82 +1998,378 @@
     
-public Date getCreatedAt() %7B%0A            return this.createdAt;%0A        %7D%0A
+/**%0A         * Gets the date that the collaborator was created.%0A         * @return the date that the collaborator was created.%0A         */%0A        public Date getCreatedAt() %7B%0A            return this.createdAt;%0A        %7D%0A%0A        /**%0A         * Gets the date that the collaborator was modified.%0A         * @return the date that the collaborator was modified.%0A         */
 %0A   

Add javadocs for BoxCollaborator