Package thredds.catalog2.xml.parser

Source Code of thredds.catalog2.xml.parser.ServiceNameInheritanceTest

package thredds.catalog2.xml.parser;

import thredds.catalog2.builder.CatalogBuilder;
import thredds.catalog2.builder.DatasetNodeBuilder;
import thredds.catalog2.builder.DatasetBuilder;
import thredds.catalog2.builder.AccessBuilder;
import thredds.catalog.ServiceType;

import java.net.URI;
import java.net.URISyntaxException;
import java.util.List;

import static org.junit.Assert.*;
import org.junit.Test;

/**
* Check that DatasetBuilder.getAccessBuilder() has the expected values for various catalog XML situations.
*
* <ol>
* <li> dataset[urlPath='dir/file1.nc'] && dataset@serviceName</li>
* <li> dataset[urlPath='dir/file1.nc'] && dataset/serviceName</li>
* <li> dataset[urlPath='dir/file1.nc'] && dataset/metadata/serviceName</li>
* <li> dataset[urlPath='dir/file1.nc'] && dataset/metadata[inherited=true]/serviceName</li>
* </ol>
*
* As well as
* <ul>
* <li> not inheriting from the first three,</li>
* <li> inheriting from the fourth, and</li>
* <li> overriding the inherited serviceName when child dataset has form of any of the four options above.</li>
* </ul>
*
* And finally: repeat all the above using dataset/access
*
* @author edavis
* @since 4.0
*/
public class ServiceNameInheritanceTest
{
  @Test
  public void checkDatasetWithServiceNameAttribute()
          throws URISyntaxException,
                 ThreddsXmlParserException
  {
    String docBaseUriString = "http://test/thredds/catalog2/xml/parser/ServiceNameInheritanceTest/attribute.xml";
    URI docBaseUri = new URI( docBaseUriString );
    String catalogAsString = setupDatasetWithServiceNameAttribute();

    CatalogBuilder catBuilder = CatalogXmlUtils.parseCatalogIntoBuilder( docBaseUri, catalogAsString );

    CatalogXmlUtils.assertCatalogWithCompoundServiceAsExpected( catBuilder, docBaseUri, null );
    assertDatasetOneHasOdapAccess( catBuilder );
  }

  private static String setupDatasetWithServiceNameAttribute()
  {
    StringBuilder sb = new StringBuilder()
            .append( "<dataset name='ds1' ID='DS1' urlPath='dir/file1.nc' serviceName='odap' />" );
    return CatalogXmlUtils.wrapThreddsXmlInCatalogWithCompoundService( sb.toString(), null, null, null );
  }

  @Test
  public void checkDatasetWithServiceNameInChildElement()
          throws URISyntaxException,
                 ThreddsXmlParserException
  {
    String docBaseUriString = "http://test/thredds/catalog2/xml/parser/ServiceNameInheritanceTest/childElement.xml";
    URI docBaseUri = new URI( docBaseUriString );
    String catalogAsString = setupDatasetWithServiceNameInChildElement();

    CatalogBuilder catBuilder = CatalogXmlUtils.parseCatalogIntoBuilder( docBaseUri, catalogAsString );

    CatalogXmlUtils.assertCatalogWithCompoundServiceAsExpected( catBuilder, docBaseUri, null );
    assertDatasetOneHasOdapAccess( catBuilder );
  }

  private static String setupDatasetWithServiceNameInChildElement()
  {
    StringBuilder sb = new StringBuilder()
            .append( "<dataset name='ds1' ID='DS1' urlPath='dir/file1.nc'>" )
            .append( "    <serviceName>odap</serviceName>" )
            .append( "</dataset>" );
    return CatalogXmlUtils.wrapThreddsXmlInCatalogWithCompoundService( sb.toString(), null, null, null );
  }

  @Test
  public void checkDatasetWithServiceNameInMetadataElement()
          throws URISyntaxException,
                 ThreddsXmlParserException
  {
    String docBaseUriString = "http://test/thredds/catalog2/xml/parser/ServiceNameInheritanceTest/metadataElement.xml";
    URI docBaseUri = new URI( docBaseUriString );
    String catalogAsString = setupDatasetWithServiceNameInMetadataElement();

    CatalogBuilder catBuilder = CatalogXmlUtils.parseCatalogIntoBuilder( docBaseUri, catalogAsString );

    CatalogXmlUtils.assertCatalogWithCompoundServiceAsExpected( catBuilder, docBaseUri, null );
    assertDatasetOneHasOdapAccess( catBuilder );
  }

  private static String setupDatasetWithServiceNameInMetadataElement()
  {
    StringBuilder sb = new StringBuilder()
            .append( "<dataset name='ds1' ID='DS1' urlPath='dir/file1.nc'>" )
            .append( "  <metadata>" )
            .append( "    <serviceName>odap</serviceName>" )
            .append( "  </metadata>" )
            .append( "</dataset>" );
    return CatalogXmlUtils.wrapThreddsXmlInCatalogWithCompoundService( sb.toString(), null, null, null );
  }

  @Test
  public void checkDatasetWithServiceNameInInheritedMetadataElement()
          throws URISyntaxException,
                 ThreddsXmlParserException
  {
    String docBaseUriString = "http://test/thredds/catalog2/xml/parser/ServiceNameInheritanceTest/inheritedMetadataElement.xml";
    URI docBaseUri = new URI( docBaseUriString );
    String catalogAsString = setupDatasetWithServiceNameInInheritedMetadataElement();

    CatalogBuilder catBuilder = CatalogXmlUtils.parseCatalogIntoBuilder( docBaseUri, catalogAsString );

    CatalogXmlUtils.assertCatalogWithCompoundServiceAsExpected( catBuilder, docBaseUri, null );
    assertDatasetOneHasOdapAccess( catBuilder );
  }

  private static String setupDatasetWithServiceNameInInheritedMetadataElement()
  {
    StringBuilder sb = new StringBuilder()
            .append( "<dataset name='ds1' ID='DS1' urlPath='dir/file1.nc'>" )
            .append( "  <metadata inherited='true'>" )
            .append( "    <serviceName>odap</serviceName>" )
            .append( "  </metadata>" )
            .append( "</dataset>" );
    return CatalogXmlUtils.wrapThreddsXmlInCatalogWithCompoundService( sb.toString(), null, null, null );
  }

  @Test
  public void checkDatasetNotInheritingServiceNameFromParentAuthorityAttribute()
          throws URISyntaxException,
                 ThreddsXmlParserException
  {
    String docBaseUriString = "http://test/thredds/catalog2/xml/parser/ServiceNameInheritanceTest/notInheritAttribute.xml";
    URI docBaseUri = new URI( docBaseUriString );
    String catalogAsString = setupDatasetNotInheritingServiceNameFromParentAuthorityAttribute();

    CatalogBuilder catBuilder = CatalogXmlUtils.parseCatalogIntoBuilder( docBaseUri, catalogAsString );

    CatalogXmlUtils.assertCatalogWithCompoundServiceAsExpected( catBuilder, docBaseUri, null );
    assertDatasetOneHasOdapAccess( catBuilder );
    assertDatasetTwoHasNoAccess( catBuilder );
  }

  private static String setupDatasetNotInheritingServiceNameFromParentAuthorityAttribute()
  {
    StringBuilder sb = new StringBuilder()
            .append( "<dataset name='ds1' ID='DS1' urlPath='dir/file1.nc' serviceName='odap'>" )
            .append( "  <dataset name='dataset 2' ID='DS2' />" )
            .append( "</dataset>" );
    return CatalogXmlUtils.wrapThreddsXmlInCatalogWithCompoundService( sb.toString(), null, null, null );
  }

  @Test
  public void checkDatasetNotInheritingServiceNameFromSiblingServiceElement()
          throws URISyntaxException,
                 ThreddsXmlParserException
  {
    String docBaseUriString = "http://test/thredds/catalog2/xml/parser/ServiceNameInheritanceTest/notInheritFromSiblingElement.xml";
    URI docBaseUri = new URI( docBaseUriString );
    String catalogAsString = setupDatasetNotInheritingServiceNameFromSiblingServiceElement();

    CatalogBuilder catBuilder = CatalogXmlUtils.parseCatalogIntoBuilder( docBaseUri, catalogAsString );

    CatalogXmlUtils.assertCatalogWithCompoundServiceAsExpected( catBuilder, docBaseUri, null );
    assertDatasetOneHasOdapAccess( catBuilder );
    assertDatasetTwoHasNoAccess( catBuilder );
  }

  private static String setupDatasetNotInheritingServiceNameFromSiblingServiceElement()
  {
    StringBuilder sb = new StringBuilder()
            .append( "<dataset name='ds1' ID='DS1' urlPath='dir/file1.nc'>" )
            .append( "    <serviceName>odap</serviceName>" )
            .append( "  <dataset name='dataset 2' ID='DS2' />" )
            .append( "</dataset>" );
    return CatalogXmlUtils.wrapThreddsXmlInCatalogWithCompoundService( sb.toString(), null, null, null );
  }

  @Test
  public void checkDatasetNotInheritingServiceNameFromParentMetadataElement()
          throws URISyntaxException,
                 ThreddsXmlParserException
  {
    String docBaseUriString = "http://test/thredds/catalog2/xml/parser/ServiceNameInheritanceTest/notInheritFromParentMetadataElement.xml";
    URI docBaseUri = new URI( docBaseUriString );
    String catalogAsString = setupDatasetNotInheritingServiceNameFromParentMetadataElement();

    CatalogBuilder catBuilder = CatalogXmlUtils.parseCatalogIntoBuilder( docBaseUri, catalogAsString );

    CatalogXmlUtils.assertCatalogWithCompoundServiceAsExpected( catBuilder, docBaseUri, null );
    assertDatasetOneHasOdapAccess( catBuilder );
    assertDatasetTwoHasNoAccess( catBuilder );
  }

  private static String setupDatasetNotInheritingServiceNameFromParentMetadataElement()
  {
    StringBuilder sb = new StringBuilder()
            .append( "<dataset name='ds1' ID='DS1' urlPath='dir/file1.nc'>" )
            .append( "  <metadata>" )
            .append( "    <serviceName>odap</serviceName>" )
            .append( "  </metadata>" )
            .append( "  <dataset name='dataset 2' ID='DS2' />" )
            .append( "</dataset>" );
    return CatalogXmlUtils.wrapThreddsXmlInCatalogWithCompoundService( sb.toString(), null, null, null );
  }

  @Test
  public void checkDatasetInheritingServiceNameFromParentInheritedMetadataElement()
          throws URISyntaxException,
                 ThreddsXmlParserException
  {
    String docBaseUriString = "http://test/thredds/catalog2/xml/parser/ServiceNameInheritanceTest/notInheritFromParentInheritedMetadataElement.xml";
    URI docBaseUri = new URI( docBaseUriString );
    String catalogAsString = setupDatasetInheritingServiceNameFromParentInheritedMetadataElement();

    CatalogBuilder catBuilder = CatalogXmlUtils.parseCatalogIntoBuilder( docBaseUri, catalogAsString );

    CatalogXmlUtils.assertCatalogWithCompoundServiceAsExpected( catBuilder, docBaseUri, null );
    assertDatasetOneHasOdapAccess( catBuilder );
    assertDatasetTwoHasOdapAccess( catBuilder );
  }

  private static String setupDatasetInheritingServiceNameFromParentInheritedMetadataElement()
  {
    StringBuilder sb = new StringBuilder()
            .append( "<dataset name='ds1' ID='DS1' urlPath='dir/file1.nc'>" )
            .append( "  <metadata inherited='true'>" )
            .append( "    <serviceName>odap</serviceName>" )
            .append( "  </metadata>" )
            .append( "  <dataset name='ds2' ID='DS2' urlPath='dir/file2.nc' />" )
            .append( "</dataset>" );
    return CatalogXmlUtils.wrapThreddsXmlInCatalogWithCompoundService( sb.toString(), null, null, null );
  }

  @Test
  public void checkDatasetOverridingInheritedServiceNameWithAttribute()
          throws URISyntaxException,
                 ThreddsXmlParserException
  {
    String docBaseUriString = "http://test/thredds/catalog2/xml/parser/ServiceNameInheritanceTest/overrideInheritedServiceNameWithAttribute.xml";
    URI docBaseUri = new URI( docBaseUriString );
    String catalogAsString = setupDatasetOverridingInheritedServiceNameWithAttribute();

    CatalogBuilder catBuilder = CatalogXmlUtils.parseCatalogIntoBuilder( docBaseUri, catalogAsString );

    CatalogXmlUtils.assertCatalogWithCompoundServiceAsExpected( catBuilder, docBaseUri, null );
    assertDatasetOneHasOdapAccess( catBuilder );
    assertDatasetTwoHasWcsAccess( catBuilder );
  }

  private static String setupDatasetOverridingInheritedServiceNameWithAttribute()
  {
    StringBuilder sb = new StringBuilder()
            .append( "<dataset name='ds1' ID='DS1' urlPath='dir/file1.nc'>" )
            .append( "  <metadata inherited='true'>" )
            .append( "    <serviceName>odap</serviceName>" )
            .append( "  </metadata>" )
            .append( "  <dataset name='ds2' ID='DS2' urlPath='dir/file2.nc' serviceName='wcs' />" )
            .append( "</dataset>" );
    return CatalogXmlUtils.wrapThreddsXmlInCatalogWithCompoundService( sb.toString(), null, null, null );
  }

  @Test
  public void checkDatasetOverridingInheritedServiceNameWithChildElement()
          throws URISyntaxException,
                 ThreddsXmlParserException
  {
    String docBaseUriString = "http://test/thredds/catalog2/xml/parser/ServiceNameInheritanceTest/overrideInheritedServiceNameWithChildElement.xml";
    URI docBaseUri = new URI( docBaseUriString );
    String catalogAsString = setupDatasetOverridingInheritedServiceNameWithChildElement();

    CatalogBuilder catBuilder = CatalogXmlUtils.parseCatalogIntoBuilder( docBaseUri, catalogAsString );

    CatalogXmlUtils.assertCatalogWithCompoundServiceAsExpected( catBuilder, docBaseUri, null );
    assertDatasetOneHasOdapAccess( catBuilder );
    assertDatasetTwoHasWcsAccess( catBuilder );
  }

  private static String setupDatasetOverridingInheritedServiceNameWithChildElement()
  {
    StringBuilder sb = new StringBuilder()
            .append( "<dataset name='ds1' ID='DS1' urlPath='dir/file1.nc'>" )
            .append( "  <metadata inherited='true'>" )
            .append( "    <serviceName>odap</serviceName>" )
            .append( "  </metadata>" )
            .append( "  <dataset name='ds2' ID='DS2' urlPath='dir/file2.nc'>" )
            .append( "    <serviceName>wcs</serviceName>" )
            .append( "  </dataset>" )
            .append( "</dataset>" );

    return CatalogXmlUtils.wrapThreddsXmlInCatalogWithCompoundService( sb.toString(), null, null, null );
  }

  @Test
  public void checkDatasetOverridingInheritedServiceNameWithChildMetadataElement()
          throws URISyntaxException,
                 ThreddsXmlParserException
  {
    String docBaseUriString = "http://test/thredds/catalog2/xml/parser/ServiceNameInheritanceTest/overrideInheritedServiceNameWithChildMetadataElement.xml";
    URI docBaseUri = new URI( docBaseUriString );
    String catalogAsString = setupDatasetOverridingInheritedServiceNameWithChildMetadataElement();

    CatalogBuilder catBuilder = CatalogXmlUtils.parseCatalogIntoBuilder( docBaseUri, catalogAsString );

    CatalogXmlUtils.assertCatalogWithCompoundServiceAsExpected( catBuilder, docBaseUri, null );
    assertDatasetOneHasOdapAccess( catBuilder );
    assertDatasetTwoHasWcsAccess( catBuilder );
  }

  private static String setupDatasetOverridingInheritedServiceNameWithChildMetadataElement()
  {
    StringBuilder sb = new StringBuilder()
            .append( "<dataset name='ds1' ID='DS1' urlPath='dir/file1.nc'>" )
            .append( "  <metadata inherited='true'>" )
            .append( "    <serviceName>odap</serviceName>" )
            .append( "  </metadata>" )
            .append( "  <dataset name='ds2' ID='DS2' urlPath='dir/file2.nc'>" )
            .append( "    <metadata>" )
            .append( "      <serviceName>wcs</serviceName>" )
            .append( "    </metadata>" )
            .append( "  </dataset>" )
            .append( "</dataset>" );

    return CatalogXmlUtils.wrapThreddsXmlInCatalogWithCompoundService( sb.toString(), null, null, null );
  }

  @Test
  public void checkDatasetOverridingInheritedServiceWithChildInheritedMetadataElement()
          throws URISyntaxException,
                 ThreddsXmlParserException
  {
    String docBaseUriString = "http://test/thredds/catalog2/xml/parser/ServiceNameInheritanceTest/overrideInheritedServiceNameWithChildInheritedMetadataElement.xml";
    URI docBaseUri = new URI( docBaseUriString );
    String catalogAsString = setupDatasetOverridingInheritedServiceWithChildInheritedMetadataElement();

    CatalogBuilder catBuilder = CatalogXmlUtils.parseCatalogIntoBuilder( docBaseUri, catalogAsString );

    CatalogXmlUtils.assertCatalogWithCompoundServiceAsExpected( catBuilder, docBaseUri, null );
    assertDatasetOneHasOdapAccess( catBuilder );
    assertDatasetTwoHasWcsAccess( catBuilder );
  }

  private static String setupDatasetOverridingInheritedServiceWithChildInheritedMetadataElement()
  {
    StringBuilder sb = new StringBuilder()
            .append( "<dataset name='ds1' ID='DS1' urlPath='dir/file1.nc'>" )
            .append( "  <metadata inherited='true'>" )
            .append( "    <serviceName>odap</serviceName>" )
            .append( "  </metadata>" )
            .append( "  <dataset name='ds2' ID='DS2' urlPath='dir/file2.nc'>" )
            .append( "    <metadata inherited='true'>" )
            .append( "      <serviceName>wcs</serviceName>" )
            .append( "    </metadata>" )
            .append( "  </dataset>" )
            .append( "</dataset>" );

    return CatalogXmlUtils.wrapThreddsXmlInCatalogWithCompoundService( sb.toString(), null, null, null );
  }

  @Test
  public void checkDatasetAccessWithLocalServiceNameAttribute()
          throws URISyntaxException,
                 ThreddsXmlParserException
  {
    String docBaseUriString = "http://test/thredds/catalog2/xml/parser/ServiceNameInheritanceTest/dsAccessWithLocalAttribute.xml";
    URI docBaseUri = new URI( docBaseUriString );
    String catalogAsString = setupDatasetAccessWithLocalServiceNameAttribute();

    CatalogBuilder catBuilder = CatalogXmlUtils.parseCatalogIntoBuilder( docBaseUri, catalogAsString );

    CatalogXmlUtils.assertCatalogWithCompoundServiceAsExpected( catBuilder, docBaseUri, null );
    assertDatasetOneHasOdapAccess( catBuilder );
  }

  private static String setupDatasetAccessWithLocalServiceNameAttribute()
  {
    StringBuilder sb = new StringBuilder()
            .append( "<dataset name='ds1' ID='DS1'>" )
            .append( "  <access urlPath='dir/file1.nc' serviceName='odap' />")
            .append( "</dataset>");
    return CatalogXmlUtils.wrapThreddsXmlInCatalogWithCompoundService( sb.toString(), null, null, null );
  }

  @Test
  public void checkDatasetAccessWithParentServiceNameAttribute()
          throws URISyntaxException,
                 ThreddsXmlParserException
  {
    String docBaseUriString = "http://test/thredds/catalog2/xml/parser/ServiceNameInheritanceTest/dsAccessWithParentAttribute.xml";
    URI docBaseUri = new URI( docBaseUriString );
    String catalogAsString = setupDatasetAccessWithParentServiceNameAttribute();

    CatalogBuilder catBuilder = CatalogXmlUtils.parseCatalogIntoBuilder( docBaseUri, catalogAsString );

    CatalogXmlUtils.assertCatalogWithCompoundServiceAsExpected( catBuilder, docBaseUri, null );
    assertDatasetOneHasOdapAccess( catBuilder );
  }

  private static String setupDatasetAccessWithParentServiceNameAttribute()
  {
    StringBuilder sb = new StringBuilder()
            .append( "<dataset name='ds1' ID='DS1' serviceName='odap'>" )
            .append( "  <access urlPath='dir/file1.nc' />")
            .append( "</dataset>");
    return CatalogXmlUtils.wrapThreddsXmlInCatalogWithCompoundService( sb.toString(), null, null, null );
  }

  @Test
  public void checkDatasetAccessWithServiceNameElement()
          throws URISyntaxException,
                 ThreddsXmlParserException
  {
    String docBaseUriString = "http://test/thredds/catalog2/xml/parser/ServiceNameInheritanceTest/dsAccessWithServiceNameElement.xml";
    URI docBaseUri = new URI( docBaseUriString );
    String catalogAsString = setupDatasetAccessWithServiceNameElement();

    CatalogBuilder catBuilder = CatalogXmlUtils.parseCatalogIntoBuilder( docBaseUri, catalogAsString );

    CatalogXmlUtils.assertCatalogWithCompoundServiceAsExpected( catBuilder, docBaseUri, null );
    assertDatasetOneHasOdapAccess( catBuilder );
  }

  private static String setupDatasetAccessWithServiceNameElement()
  {
    StringBuilder sb = new StringBuilder()
            .append( "<dataset name='ds1' ID='DS1'>" )
            .append( "  <serviceName>odap</serviceName>")
            .append( "  <access urlPath='dir/file1.nc' />")
            .append( "</dataset>");
    return CatalogXmlUtils.wrapThreddsXmlInCatalogWithCompoundService( sb.toString(), null, null, null );
  }

  @Test
  public void checkDatasetAccessWithMetadataServiceNameElement()
          throws URISyntaxException,
                 ThreddsXmlParserException
  {
    String docBaseUriString = "http://test/thredds/catalog2/xml/parser/ServiceNameInheritanceTest/dsAccessWithMetadataServiceNameElement.xml";
    URI docBaseUri = new URI( docBaseUriString );
    String catalogAsString = setupDatasetAccessWithMetadataServiceNameElement();

    CatalogBuilder catBuilder = CatalogXmlUtils.parseCatalogIntoBuilder( docBaseUri, catalogAsString );

    CatalogXmlUtils.assertCatalogWithCompoundServiceAsExpected( catBuilder, docBaseUri, null );
    assertDatasetOneHasOdapAccess( catBuilder );
  }

  private static String setupDatasetAccessWithMetadataServiceNameElement()
  {
    StringBuilder sb = new StringBuilder()
            .append( "<dataset name='ds1' ID='DS1'>" )
            .append( "  <metadata>")
            .append( "    <serviceName>odap</serviceName>")
            .append( "  </metadata>" )
            .append( "  <access urlPath='dir/file1.nc' />")
            .append( "</dataset>");
    return CatalogXmlUtils.wrapThreddsXmlInCatalogWithCompoundService( sb.toString(), null, null, null );
  }

  @Test
  public void checkDatasetAccessWithInheritedMetadataServiceNameElement()
          throws URISyntaxException,
                 ThreddsXmlParserException
  {
    String docBaseUriString = "http://test/thredds/catalog2/xml/parser/ServiceNameInheritanceTest/dsAccessWithInheritedMetadataServiceNameElement.xml";
    URI docBaseUri = new URI( docBaseUriString );
    String catalogAsString = setupDatasetAccessWithInheritedMetadataServiceNameElement();

    CatalogBuilder catBuilder = CatalogXmlUtils.parseCatalogIntoBuilder( docBaseUri, catalogAsString );

    CatalogXmlUtils.assertCatalogWithCompoundServiceAsExpected( catBuilder, docBaseUri, null );
    assertDatasetOneHasOdapAccess( catBuilder );
  }

  private static String setupDatasetAccessWithInheritedMetadataServiceNameElement()
  {
    StringBuilder sb = new StringBuilder()
            .append( "<dataset name='ds1' ID='DS1'>" )
            .append( "  <metadata inherited='true'>")
            .append( "    <serviceName>odap</serviceName>")
            .append( "  </metadata>" )
            .append( "  <access urlPath='dir/file1.nc' />")
            .append( "</dataset>");
    return CatalogXmlUtils.wrapThreddsXmlInCatalogWithCompoundService( sb.toString(), null, null, null );
  }

  private static void assertDatasetOneHasOdapAccess( CatalogBuilder catBuilder ) {
    DatasetBuilder dsBldr = assertGetDatasetOne( catBuilder );
    List<AccessBuilder> accessBldrs = dsBldr.getAccessBuilders();
    assertEquals( 1, accessBldrs.size());
    AccessBuilder access = accessBldrs.get( 0);
    assertOdapAccessToFile1( access );
  }

  private static void assertDatasetTwoHasOdapAccess( CatalogBuilder catBuilder ) {
    DatasetBuilder dsBldr = assertGetDatasetTwo( catBuilder );
    List<AccessBuilder> accessBldrs = dsBldr.getAccessBuilders();
    assertEquals( 1, accessBldrs.size());
    AccessBuilder access = accessBldrs.get( 0);
    assertOdapAccessToFile2( access );
  }

  private static void assertDatasetTwoHasWcsAccess( CatalogBuilder catBuilder ) {
    DatasetBuilder dsBldr = assertGetDatasetTwo( catBuilder );
    List<AccessBuilder> accessBldrs = dsBldr.getAccessBuilders();
    assertEquals( 1, accessBldrs.size());
    AccessBuilder access = accessBldrs.get( 0);
    assertWcsAccess( access );
  }

  private static void assertDatasetTwoHasNoAccess( CatalogBuilder catBuilder ) {
    DatasetBuilder dsBldr = assertGetDatasetTwo( catBuilder );
    assertEquals( 0, dsBldr.getAccessBuilders().size());
  }

  private static void assertOdapAccessToFile1( AccessBuilder access )
  {
    assertEquals( "dir/file1.nc", access.getUrlPath() );
    assertEquals( "odap", access.getServiceBuilder().getName() );
    assertEquals( ServiceType.OPENDAP, access.getServiceBuilder().getType() );
    assertEquals( "/thredds/dodsC/", access.getServiceBuilder().getBaseUri().toString() );
  }

  private static void assertOdapAccessToFile2( AccessBuilder access )
  {
    assertEquals( "dir/file2.nc", access.getUrlPath() );
    assertEquals( "odap", access.getServiceBuilder().getName() );
    assertEquals( ServiceType.OPENDAP, access.getServiceBuilder().getType() );
    assertEquals( "/thredds/dodsC/", access.getServiceBuilder().getBaseUri().toString() );
  }

  private static void assertWcsAccess( AccessBuilder access )
  {
    assertEquals( "dir/file2.nc", access.getUrlPath() );
    assertEquals( "wcs", access.getServiceBuilder().getName() );
    assertEquals( ServiceType.WCS, access.getServiceBuilder().getType() );
    assertEquals( "/thredds/wcs/", access.getServiceBuilder().getBaseUri().toString() );
  }

  private static DatasetBuilder assertGetDatasetOne( CatalogBuilder catBuilder ) {
    List<DatasetNodeBuilder> datasetNodes = catBuilder.getDatasetNodeBuilders();
    assertEquals( 1, datasetNodes.size() );
    DatasetBuilder dsBldr = (DatasetBuilder) datasetNodes.get( 0 );
    assertEquals( "DS1", dsBldr.getId() );
    return dsBldr;
  }

  private static DatasetBuilder assertGetDatasetTwo( CatalogBuilder catBuilder ) {
    DatasetBuilder dsBldr = assertGetDatasetOne( catBuilder);

    List<DatasetNodeBuilder> datasetNodes = dsBldr.getDatasetNodeBuilders();
    assertEquals( 1, datasetNodes.size() );
    dsBldr = (DatasetBuilder) datasetNodes.get( 0 );
    assertEquals( "DS2", dsBldr.getId() );
    return dsBldr;
  }

}
TOP

Related Classes of thredds.catalog2.xml.parser.ServiceNameInheritanceTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.