
org.apache.flume.conf.ComponentConfiguration Maven / Gradle / Ivy
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with this
* work for additional information regarding copyright ownership. The ASF
* licenses this file to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package org.apache.flume.conf;
import java.util.LinkedList;
import java.util.List;
import org.apache.flume.Context;
import org.apache.flume.conf.FlumeConfigurationError.ErrorOrWarning;
/**
*
* Abstract implementation of the Component Configuration Manager. This class
* does the configuration in the object. The component specific versions, which
* inherit from this, create the configuration based on the config file. All
* subclasses of this class store properties of the component. The properties
* can be stored as properties in this
*
*/
public abstract class ComponentConfiguration {
protected String componentName;
private String type;
protected boolean configured;
protected List errors;
private boolean notFoundConfigClass;
public boolean isNotFoundConfigClass() {
return notFoundConfigClass;
}
public void setNotFoundConfigClass() {
this.notFoundConfigClass = true;
}
protected ComponentConfiguration(String componentName) {
this.componentName = componentName;
errors = new LinkedList();
this.type = null;
configured = false;
}
public List getErrors() {
return errors;
}
public void configure(Context context) throws ConfigurationException {
failIfConfigured();
String confType = context.getString(
BasicConfigurationConstants.CONFIG_TYPE);
if (confType != null && !confType.isEmpty()) {
this.type = confType;
}
// Type can be set by child class constructors, so check if it was.
if (this.type == null || this.type.isEmpty()) {
errors.add(new FlumeConfigurationError(componentName,
BasicConfigurationConstants.CONFIG_TYPE,
FlumeConfigurationErrorType.ATTRS_MISSING, ErrorOrWarning.ERROR));
throw new ConfigurationException(
"Component has no type. Cannot configure. " + componentName);
}
}
protected void failIfConfigured() throws ConfigurationException {
if (configured) {
throw new ConfigurationException("Already configured component."
+ componentName);
}
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String toString() {
return toString(0);
}
public String toString(int indentCount) {
StringBuilder indentSb = new StringBuilder("");
for (int i = 0; i < indentCount; i++) {
indentSb.append(FlumeConfiguration.INDENTSTEP);
}
String indent = indentSb.toString();
StringBuilder sb = new StringBuilder(indent);
sb.append("ComponentConfiguration[").append(componentName).append("]");
sb.append(FlumeConfiguration.NEWLINE).append(indent).append(
FlumeConfiguration.INDENTSTEP).append("CONFIG: ");
sb.append(FlumeConfiguration.NEWLINE).append(indent).append(
FlumeConfiguration.INDENTSTEP);
return sb.toString();
}
public String getComponentName() {
return componentName;
}
protected void setConfigured() {
configured = true;
}
public enum ComponentType {
OTHER(null),
SOURCE("Source"),
SINK("Sink"),
SINK_PROCESSOR("SinkProcessor"),
SINKGROUP("Sinkgroup"),
CHANNEL("Channel"),
CHANNELSELECTOR("ChannelSelector");
private final String componentType;
private ComponentType(String type) {
componentType = type;
}
public String getComponentType() {
return componentType;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy