Java tutorial
/* * Copyright 2015-2016 Providence Authors * * 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 net.morimekta.providence.generator.format.java; import net.morimekta.providence.descriptor.PMessageDescriptor; import net.morimekta.providence.generator.GeneratorException; import net.morimekta.providence.generator.format.java.messages.BuilderCommonMemberFormatter; import net.morimekta.providence.generator.format.java.messages.BuilderCoreOverridesFormatter; import net.morimekta.providence.generator.format.java.messages.CommonBuilderFormatter; import net.morimekta.providence.generator.format.java.messages.CommonMemberFormatter; import net.morimekta.providence.generator.format.java.messages.CommonOverridesFormatter; import net.morimekta.providence.generator.format.java.messages.CoreOverridesFormatter; import net.morimekta.providence.generator.format.java.messages.extras.AndroidMessageFormatter; import net.morimekta.providence.generator.format.java.messages.extras.HazelcastPortableMessageFormatter; import net.morimekta.providence.generator.format.java.messages.extras.BinaryReaderBuilderFormatter; import net.morimekta.providence.generator.format.java.messages.extras.BinaryWriterFormatter; import net.morimekta.providence.generator.format.java.messages.extras.JacksonMessageFormatter; import net.morimekta.providence.generator.format.java.shared.BaseMessageFormatter; import net.morimekta.providence.generator.format.java.shared.MessageMemberFormatter; import net.morimekta.providence.generator.format.java.utils.JHelper; import net.morimekta.providence.generator.format.java.utils.JMessage; import net.morimekta.util.io.IndentedPrintWriter; import com.google.common.collect.ImmutableList; import java.util.List; /** * TODO(steineldar): Make a proper class description. */ public class JavaMessageFormatter extends BaseMessageFormatter { public JavaMessageFormatter(IndentedPrintWriter writer, JHelper helper, JavaOptions options) { this(false, false, writer, helper, options); } public JavaMessageFormatter(boolean inner, boolean makeProtected, IndentedPrintWriter writer, JHelper helper, JavaOptions options) { super(inner, makeProtected, writer, helper, getFormatters(writer, helper, options)); } public String getClassName(JMessage<?> message) { return message.instanceType(); } private static List<MessageMemberFormatter> getFormatters(IndentedPrintWriter writer, JHelper helper, JavaOptions options) { ImmutableList.Builder<MessageMemberFormatter> builderFormatters = ImmutableList.builder(); builderFormatters.add(new BuilderCommonMemberFormatter(writer, helper)) .add(new BuilderCoreOverridesFormatter(writer, helper)); if (options.hazelcast_portable) { builderFormatters.add(new HazelcastPortableMessageFormatter(writer, helper)); } ImmutableList.Builder<MessageMemberFormatter> formatters = ImmutableList.builder(); formatters.add(new CommonMemberFormatter(writer, helper)).add(new CoreOverridesFormatter(writer)) .add(new CommonOverridesFormatter(writer)); if (options.android) { formatters.add(new AndroidMessageFormatter(writer)); } if (options.jackson) { formatters.add(new JacksonMessageFormatter(writer, helper)); } if (options.rw_binary) { formatters.add(new BinaryWriterFormatter(writer, helper)); builderFormatters.add(new BinaryReaderBuilderFormatter(writer, helper)); } formatters.add(new CommonBuilderFormatter(writer, helper, builderFormatters.build())); return formatters.build(); } @Override public void appendMessageClass(PMessageDescriptor<?, ?> descriptor) throws GeneratorException { super.appendMessageClass(descriptor); writer.newline(); } }