/*
* ModeShape (http://www.modeshape.org)
*
* Licensed 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.modeshape.jboss.subsystem;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.jboss.as.controller.AbstractAttributeDefinitionBuilder;
import org.jboss.as.controller.SimpleAttributeDefinition;
import org.jboss.as.controller.access.management.AccessConstraintDefinition;
import org.jboss.as.controller.client.helpers.MeasurementUnit;
import org.jboss.as.controller.operations.validation.ParameterValidator;
import org.jboss.as.controller.registry.AttributeAccess.Flag;
import org.jboss.dmr.ModelNode;
import org.jboss.dmr.ModelType;
/**
* An AS attribute definition builder which produces a {@link MappedAttributeDefinition} if a configuration path is given.
*/
public class MappedAttributeDefinitionBuilder extends AbstractAttributeDefinitionBuilder<MappedAttributeDefinitionBuilder, SimpleAttributeDefinition> {
private List<String> configPath;
protected MappedAttributeDefinitionBuilder( String attributeName,
ModelType type,
String...pathToField) {
super(attributeName, type);
configPath = Collections.unmodifiableList(Arrays.asList(pathToField));
}
@Override
public MappedAttributeDefinitionBuilder setXmlName( String xmlName ) {
return super.setXmlName(xmlName);
}
@Override
public MappedAttributeDefinitionBuilder setAllowNull( boolean allowNull ) {
return super.setAllowNull(allowNull);
}
@Override
public MappedAttributeDefinitionBuilder setAllowExpression( boolean allowExpression ) {
return super.setAllowExpression(allowExpression);
}
@Override
public MappedAttributeDefinitionBuilder setDefaultValue( ModelNode defaultValue ) {
return super.setDefaultValue(defaultValue);
}
@Override
public MappedAttributeDefinitionBuilder setValidator( ParameterValidator validator ) {
return super.setValidator(validator);
}
@Override
public MappedAttributeDefinitionBuilder setFlags( Flag... flags ) {
return super.setFlags(flags);
}
@Override
public MappedAttributeDefinitionBuilder setAccessConstraints( AccessConstraintDefinition... constraints ) {
return super.setAccessConstraints(constraints);
}
@Override
public MappedAttributeDefinitionBuilder setMeasurementUnit( MeasurementUnit unit ) {
return super.setMeasurementUnit(unit);
}
@Override
public MappedSimpleAttributeDefinition build() {
return new MappedSimpleAttributeDefinition(this, configPath);
}
}