or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

configuration.mdexceptions.mdhttp.mdindex.mdio.mdlogging.mdnetwork.mdsecurity.mdservices.mdutilities.md
tile.json

tessl/maven-io-cdap-cdap--cdap-common

CDAP Common provides core common utilities and abstractions for the CDAP (Cask Data Application Platform) ecosystem including exception handling, service management, configuration, HTTP utilities, metadata management, security abstractions, discovery services, and various utility classes that are shared across CDAP components.

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/io.cdap.cdap/cdap-common@6.11.x

To install, run

npx @tessl/cli install tessl/maven-io-cdap-cdap--cdap-common@6.11.0

index.mddocs/

CDAP Common

CDAP Common provides core common utilities and abstractions for the CDAP (Cask Data Application Platform) ecosystem. It serves as the foundational library for building data applications on Hadoop, offering comprehensive exception handling, service management, configuration utilities, HTTP services, metadata abstractions, security integration, and various utility classes shared across CDAP components.

Package Information

  • Package Name: cdap-common
  • Package Type: maven
  • Language: Java
  • Group ID: io.cdap.cdap
  • Version: 6.11.0
  • Installation: Add to your Maven pom.xml:
<dependency>
  <groupId>io.cdap.cdap</groupId>
  <artifactId>cdap-common</artifactId>
  <version>6.11.0</version>
</dependency>

Core Imports

// Core API imports
import io.cdap.cdap.api.metrics.MetricsCollectionService;
import io.cdap.cdap.api.auditlogging.AuditLogWriter;

// Common utilities
import io.cdap.cdap.common.app.RunIds;
import io.cdap.cdap.common.conf.CConfiguration;
import io.cdap.cdap.common.conf.Constants;
import io.cdap.cdap.common.utils.Networks;
import io.cdap.cdap.common.service.Services;

// Exception handling
import io.cdap.cdap.common.*;

Basic Usage

import io.cdap.cdap.common.app.RunIds;
import io.cdap.cdap.common.conf.CConfiguration;
import io.cdap.cdap.common.conf.Constants;
import io.cdap.cdap.common.utils.Networks;

// Generate unique run IDs
RunId runId = RunIds.generate();
System.out.println("Generated Run ID: " + runId.toString());

// Configuration management
CConfiguration cConf = CConfiguration.create();
String servicePort = cConf.get(Constants.Service.APP_FABRIC_HTTP);

// Network utilities
int randomPort = Networks.getRandomPort();
InetAddress resolvedAddress = Networks.resolve("localhost", InetAddress.getLoopbackAddress());

// Exception handling
try {
    // Some operation that might fail
    performOperation();
} catch (Exception e) {
    throw new BadRequestException("Invalid request: " + e.getMessage(), e);
}

Architecture

CDAP Common is built around several key architectural patterns:

  • Service Framework: Built on Google Guava's Service abstraction with lifecycle management, retry strategies, and service discovery integration
  • Configuration Hierarchy: CConfiguration for general settings, SConfiguration for secure data, with property stores for dynamic updates
  • Exception Mapping: Comprehensive exception hierarchy mapping to HTTP status codes for consistent REST API responses
  • Metrics Integration: Pluggable metrics collection services with structured tagging and no-op testing implementations
  • Security Layers: Multi-layered security with authentication/authorization abstractions, SSL/TLS utilities, and audit logging
  • Extension Points: Plugin architecture with dynamic class loading, bytecode manipulation, and isolated classloaders

Capabilities

Exception Handling

Comprehensive exception hierarchy providing HTTP-status-mapped exceptions and domain-specific error types for consistent error handling across CDAP components.

// HTTP status exceptions
public class BadRequestException extends Exception
public class NotFoundException extends Exception  
public class ConflictException extends Exception
public class ForbiddenException extends Exception

// Domain-specific exceptions
public class ApplicationNotFoundException extends NotFoundException
public class DatasetNotFoundException extends NotFoundException
public class NamespaceNotFoundException extends NotFoundException

Exception Handling

Configuration Management

Centralized configuration system with hierarchical property management, secure configuration handling, and comprehensive constants for all CDAP settings.

public class CConfiguration extends Configuration
public class SConfiguration extends Configuration

public final class Constants {
    public static final class Service { /* service configurations */ }
    public static final class Security { /* security settings */ }
    public static final class Metrics { /* metrics configuration */ }
}

Configuration

Service Framework

Service management utilities built on Google Guava's Service interface, providing lifecycle management with timeout handling and error recovery.

public class Services {
    public static void startAndWait(Service service, long timeout, TimeUnit timeoutUnit) 
        throws TimeoutException, InterruptedException, ExecutionException;
    public static void startAndWait(Service service, long timeout, TimeUnit timeoutUnit, 
        String timeoutErrorMessage) 
        throws TimeoutException, InterruptedException, ExecutionException;
}

public interface RetryStrategy {
    long nextRetry(int failureCount, long startTime);
}

Service Framework

Network and Discovery Utilities

Network utilities for address resolution, port management, and service discovery integration with comprehensive tools for distributed service coordination.

public final class Networks {
    public static InetAddress resolve(String hostname, InetAddress onErrorAddress);
    public static int getRandomPort();
    public static String getIP(SocketAddress address);
    public static void addDiscoverable(CConfiguration cConf, String key, Discoverable discoverable);
    public static void removeDiscoverable(CConfiguration cConf, String key, Discoverable discoverable);
    public static Set<Discoverable> getDiscoverables(CConfiguration cConf, String key);
    public static void setAddress(CConfiguration cConf, String key, InetSocketAddress addr);
    public static InetSocketAddress getAddress(CConfiguration cConf, String key);
}

Network Utilities

HTTP Utilities

HTTP service building and request/response handling components for creating Netty-based HTTP services with authentication, body handling, and configuration management.

public class CommonNettyHttpServiceBuilder {
    public CommonNettyHttpServiceBuilder setHost(String host);
    public CommonNettyHttpServiceBuilder setPort(int port);
    public NettyHttpService build();
}

HTTP Utilities

Security Framework

Security abstractions including authentication annotations, authorization enforcement, SSL/TLS configuration, and audit logging capabilities.

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface AuthEnforce {
    String[] value() default {};
}

public class KeyStores {
    public static KeyStore generatedCertKeyStore(SConfiguration sConf, String password);
}

Security

Logging Framework

Comprehensive logging framework with context-aware logging, audit trail capabilities, and structured logging utilities for CDAP components.

public interface LoggingContext {
    String getLogPartition();
    String getLogPathFragment();
}

public class Loggers {
    public static <T> Logger getLogger(Class<T> clazz);
}

Logging

Utility Classes

Collection of utility classes for common operations including file handling, string manipulation, time parsing, hash calculations, run ID generation, and system detection.

public final class RunIds {
    public static RunId generate();
    public static RunId fromString(String id);
    public static long getTime(RunId runId, TimeUnit timeUnit);
}

public final class FileUtils {
    public static void ensureDirectoryExists(File directory) throws IOException;
    public static void deleteDirectoryContents(File directory) throws IOException;
}

public class TimeMathParser {
    public static long parseTimeInMs(String timeMath) throws IllegalArgumentException;
}

Utilities

I/O Framework

I/O abstractions including binary encoding/decoding, location management, seekable streams, and various I/O utilities for file and stream processing.

public interface Codec<T> {
    byte[] encode(T object) throws IOException;
    T decode(byte[] data) throws IOException;
}

public abstract class SeekableInputStream extends InputStream {
    public abstract void seek(long pos) throws IOException;
    public abstract long getPos() throws IOException;
}

I/O Framework