public static String validateExtendedAssetInfo(ExtendedAssetInfo extendedAssetInfo) {
    List<AttributeNameValue> attributeNameValues = extendedAssetInfo.getAttribute();

    if (attributeNameValues != null) {
      for (AttributeNameValue attributeNameValue : attributeNameValues) {
        if (attributeNameValue.getAttributeName() == null) {
          return RepositoryServiceClientConstants.FAILURE;
        }
        if (attributeNameValue.getAttributeValueLong() == null
            && attributeNameValue.getAttributeValueString() == null
            && attributeNameValue.isAttributeValueBoolean() == null) {
          return RepositoryServiceClientConstants.FAILURE;
        }
      }
    }
    return RepositoryServiceClientConstants.SUCCESS;
  }
  private CreateCompleteAssetResponse createAsset() throws Exception {
    AssetKey key = new AssetKey();
    Library lib = new Library();
    lib.setLibraryName(libraryName);
    key.setLibrary(lib);
    key.setAssetName(assetName);

    BasicAssetInfo basicInfo = new BasicAssetInfo();
    basicInfo.setAssetKey(key);
    basicInfo.setAssetName(assetName);
    basicInfo.setAssetDescription(assetDesc);
    basicInfo.setAssetType("Service");

    ExtendedAssetInfo extendedInfo = new ExtendedAssetInfo();
    List<AttributeNameValue> attrs = extendedInfo.getAttribute();
    attrs.add(RSProviderUtil.newAttribute("namespace", libraryName));

    AssetLifeCycleInfo lifeCycleInfo = new AssetLifeCycleInfo();
    lifeCycleInfo.setDomainOwner("John Doe");
    lifeCycleInfo.setDomainType("Technical Owner");

    AssetInfo assetInfo = new AssetInfo();
    assetInfo.setBasicAssetInfo(basicInfo);
    assetInfo.setExtendedAssetInfo(extendedInfo);
    assetInfo.setAssetLifeCycleInfo(lifeCycleInfo);

    Artifact endpoint = new Artifact();
    endpoint.setArtifactName("ep-" + assetName);
    endpoint.setArtifactCategory("Endpoint");
    endpoint.setArtifactValueType(ArtifactValueType.URL);

    String endpointUrl = baseUrl + assetName;
    ArtifactInfo endpointInfo = new ArtifactInfo();
    endpointInfo.setArtifact(endpoint);
    endpointInfo.setArtifactDetail(endpointUrl.getBytes("UTF-8"));
    endpointInfo.setContentType("application/vnd.wso2.endpoint");

    List<ArtifactInfo> artifactList = assetInfo.getArtifactInfo();
    artifactList.add(endpointInfo);

    FlattenedRelationship relationship = new FlattenedRelationship();
    List<Relation> relationList = relationship.getRelatedAsset();
    relationList.add(
        new Relation() {
          {
            this.setSourceAsset(
                RSProviderUtil.completeAssetKey(
                    new AssetKey() {
                      {
                        this.setAssetId(resources[0]);
                      }
                    },
                    null,
                    null));
            this.setTargetAsset(
                RSProviderUtil.completeAssetKey(
                    new AssetKey() {
                      {
                        this.setAssetId(dstAssets[0]);
                      }
                    },
                    null,
                    null));
            this.setAssetRelationship("DependsOn");
          }
        });
    assetInfo.setFlattenedRelationship(relationship);

    CreateCompleteAssetRequest request = new CreateCompleteAssetRequest();
    request.setAssetInfo(assetInfo);

    RepositoryServiceProviderImpl provider = new RepositoryServiceProviderImpl();
    return provider.createCompleteAsset(request);
  }