/*
* Copyright 2012 the original author or authors.
*
* 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.gradle.build.docs.dsl.docbook;
import org.gradle.build.docs.dsl.docbook.model.ClassDoc;
public class ClassDocBuilder {
private final ClassDocCommentBuilder commentBuilder;
private final ClassDocPropertiesBuilder propertiesBuilder;
private final ClassDocMethodsBuilder methodsBuilder;
private final ClassDocExtensionsBuilder extensionsBuilder;
private final ClassDocSuperTypeBuilder superTypeBuilder;
private final GenerationListener listener = new DefaultGenerationListener();
public ClassDocBuilder(DslDocModel model, JavadocConverter javadocConverter) {
commentBuilder = new ClassDocCommentBuilder(javadocConverter, listener);
propertiesBuilder = new ClassDocPropertiesBuilder(javadocConverter, listener);
methodsBuilder = new ClassDocMethodsBuilder(javadocConverter, listener);
extensionsBuilder = new ClassDocExtensionsBuilder(model, listener);
superTypeBuilder = new ClassDocSuperTypeBuilder(model, listener);
}
void build(ClassDoc classDoc) {
listener.start(String.format("class %s", classDoc.getName()));
try {
superTypeBuilder.build(classDoc);
commentBuilder.build(classDoc);
propertiesBuilder.build(classDoc);
methodsBuilder.build(classDoc);
extensionsBuilder.build(classDoc);
classDoc.mergeContent();
} finally {
listener.finish();
}
}
}