public static Entity getFrom()

in rest-api/src/jetbrains/buildServer/server/rest/model/RelatedEntity.java [178:231]


    public static Entity getFrom(@NotNull final ObjectWrapper objectWrapper, @NotNull final ServiceLocator serviceLocator) {
      Entity result = new Entity();

      Object object = objectWrapper.getObject();
      ObjectType objectType = objectWrapper.getObjectType();

      result.internalId = "NO_ID".equals(objectWrapper.getObjectId()) ? null : objectWrapper.getObjectId();
      result.type = getType(objectType);
      result.unknown = false;

      if (!ObjectType.STRING.equals(objectType) && object instanceof String) {
        //todo: investigate when this can happen
        result.text = (String)object; //todo: is this a due approach?
        result.type = "text";
      } else if (object != null) {
        switch (objectType) {
          case STRING:              result.text = (String)object; break;  //todo: check where it is used
          case BUILD_PROMOTION:     result.build = (BuildPromotion)object; break;
          case BUILD:               result.build = ((SBuild)object).getBuildPromotion();  break;
          case BUILD_TYPE:          result.buildType = new BuildTypeOrTemplate((SBuildType)object);  break;
          case BUILD_TYPE_TEMPLATE: result.buildType = new BuildTypeOrTemplate((BuildTypeTemplate)object); break;
          case PROJECT:             result.project = (SProject)object; break;
          case USER:                result.user = (jetbrains.buildServer.users.User)object; break;
          case USER_GROUP:          result.userGroup = (SUserGroup)object; break;
          case TEST:                result.test = (STest)object; break;
          case BUILD_PROBLEM:       result.problem = new ProblemWrapper(((BuildProblemInfo)object).getId(), serviceLocator); break;
          case AGENT:               result.agent = (SBuildAgent)object; break;
          case VCS_ROOT:            result.vcsRoot = (SVcsRoot)object; break;
          case VCS_MODIFICATION:    result.change = (SVcsModification)object; break;
          case AGENT_POOL:          result.agentPool = (jetbrains.buildServer.serverSide.agentPools.AgentPool)object; break;

          case SERVER:              //this is usually used as "nop" and if present, affects the indexes in the pattern, so cannot be ignored
                                    result.internalId = null; break;
          case UNKNOWN_OBJECT:  //todo: check usages
          default:                  result.unknown = true;

          /*
          still unsupported:
          case USER_ROLE: result.role = (new UserRoleHelper()).getObject(object);  break;
          case AGENT_TYPE: result.agent = (new AgentTypeHelper()).getObject(object);  break;
          case CONFIG_MODIFICATION: result.config_modification = (new ConfigModificationHelper()).getObject(object);  break;
          case HEALTH_STATUS_ITEM: result.healthItem = (new HealthStatusItemHelper()).getObject(object);  break;
          case RUN_TYPE: result.run_type = (new RunTypeItemHelper()).getObject(object);  break;
          case TOOL: result.tool = (new ToolHelper()).getObject(object);  break;
          */

          //todo: add test that we support here all the types from ObjectType
          //todo: special case when object is String (can have any type)
          //todo: handle exceptions from helpers / on casts
          //todo: need to check permissions?
        }
      }
      return result;
    }