package org.cloudfoundry.client.lib.adapters; import org.cloudfoundry.client.lib.domain.CloudOrganization; import org.cloudfoundry.client.lib.domain.CloudSpace; import org.cloudfoundry.client.lib.domain.Derivable; import org.cloudfoundry.client.lib.domain.ImmutableCloudSpace; import org.cloudfoundry.client.lib.domain.annotation.Nullable; import org.cloudfoundry.client.v2.Resource; import org.cloudfoundry.client.v2.spaces.SpaceEntity; import org.immutables.value.Value; @Value.Immutable public abstract class RawCloudSpace extends RawCloudEntity<CloudSpace> { @Value.Parameter public abstract Resource<SpaceEntity> getResource(); @Nullable public abstract Derivable<CloudOrganization> getOrganization(); @Override public CloudSpace derive() { Resource<SpaceEntity> resource = getResource(); SpaceEntity entity = resource.getEntity(); return ImmutableCloudSpace.builder() .metadata(parseResourceMetadata(resource)) .name(entity.getName()) .organization(deriveFromNullable(getOrganization())) .build(); } }