/*
* Copyright 2014 TWO SIGMA OPEN SOURCE, LLC
*
* 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 com.twosigma.beaker.jvm.module;
//import com.fasterxml.jackson.core.Version;
//import com.fasterxml.jackson.databind.MapperFeature;
//import com.fasterxml.jackson.databind.ObjectMapper;
//import com.fasterxml.jackson.databind.SerializationFeature;
//import com.fasterxml.jackson.databind.module.SimpleModule;
//import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
import com.google.inject.AbstractModule;
//import com.google.inject.Injector;
//import com.google.inject.Provides;
//import com.google.inject.Singleton;
//import com.twosigma.beaker.BeakerCodeCell;
//import com.twosigma.beaker.chart.Color;
//import com.twosigma.beaker.chart.GradientColor;
//import com.twosigma.beaker.chart.categoryplot.CategoryPlot;
//import com.twosigma.beaker.chart.categoryplot.plotitem.CategoryBars;
//import com.twosigma.beaker.chart.categoryplot.plotitem.CategoryLines;
//import com.twosigma.beaker.chart.categoryplot.plotitem.CategoryPoints;
//import com.twosigma.beaker.chart.categoryplot.plotitem.CategoryStems;
//import com.twosigma.beaker.chart.heatmap.HeatMap;
//import com.twosigma.beaker.chart.histogram.Histogram;
//import com.twosigma.beaker.chart.legend.LegendPosition;
//import com.twosigma.beaker.chart.serializer.*;
//import com.twosigma.beaker.chart.treemap.TreeMap;
//import com.twosigma.beaker.chart.xychart.CombinedPlot;
//import com.twosigma.beaker.chart.xychart.XYChart;
//import com.twosigma.beaker.chart.xychart.plotitem.*;
//import com.twosigma.beaker.easyform.EasyForm;
//import com.twosigma.beaker.easyform.EasyFormObjectManager;
//import com.twosigma.beaker.easyform.formitem.*;
//import com.twosigma.beaker.easyform.serializer.*;
//import com.twosigma.beaker.jvm.object.*;
//import com.twosigma.beaker.jvm.serialization.*;
//import com.twosigma.beaker.shared.NamespaceBinding;
//import com.twosigma.beaker.shared.json.serializer.StringObject;
//import com.twosigma.beaker.table.TableDisplay;
//import com.twosigma.beaker.table.TableDisplayAlignmentProvider;
//import com.twosigma.beaker.table.format.DecimalStringFormat;
//import com.twosigma.beaker.table.format.TimeStringFormat;
//import com.twosigma.beaker.table.format.ValueStringFormat;
//import com.twosigma.beaker.table.highlight.HeatmapHighlighter;
//import com.twosigma.beaker.table.highlight.ThreeColorHeatmapHighlighter;
//import com.twosigma.beaker.table.highlight.UniqueEntriesHighlighter;
//import com.twosigma.beaker.table.highlight.ValueHighlighter;
//import com.twosigma.beaker.table.renderer.DataBarsRenderer;
//import com.twosigma.beaker.table.serializer.*;
//import net.sf.jtreemap.swing.TreeMapNode;
//import org.slf4j.Logger;
//import javax.swing.*;
//import java.awt.image.BufferedImage;
//import java.util.Date;
/**
* The Guice module as the registry of mapping from classes to serializers
*/
public class SerializerModule extends AbstractModule {
//private final static Logger logger = LoggerFactory.getLogger(SerializerModule.class.getName());
@Override
protected void configure() {
// //bind(SimpleEvaluationObject.Serializer.class);
// bind(EvaluationResult.Serializer.class);
// bind(UpdatableEvaluationResult.Serializer.class);
// bind(OutputContainerSerializer.class);
// bind(EasyFormObjectManager.class);
// bind(EasyFormSerializer.class);
}
//
// @Provides
// @Singleton
// public BeakerObjectConverter getObjectSerializer(Injector injector) {
// BeakerObjectConverter serializer = injector.getInstance(PlotObjectSerializer.class);
// try {
// serializer.addTypeDeserializer(new TableDisplayDeSerializer(serializer));
// serializer.addTypeDeserializer(new BeakerCodeCell.DeSerializer(serializer));
// //serializer.addTypeDeserializer(new SimpleEvaluationObject.DeSerializer(serializer));
// serializer.addTypeDeserializer(new UpdatableEvaluationResult.DeSerializer(serializer));
// serializer.addTypeDeserializer(new BufferedImageDeserializer(serializer));
// serializer.addTypeDeserializer(new DateDeserializer(serializer));
// serializer.addTypeDeserializer(new ResultsDeserializer(serializer));
// serializer.addTypeDeserializer(new CollectionDeserializer(serializer));
// serializer.addTypeDeserializer(new MapDeserializer(serializer));
// serializer.addTypeDeserializer(new ColorDeserializer(serializer));
//
// serializer.addTypeDeserializer(new OutputContainerDeserializer(serializer));
// serializer.addTypeDeserializer(new OutputContainerCellDeserializer(serializer));
// serializer.addTypeDeserializer(new SimpleLayoutManagerDeserializer(serializer));
// serializer.addTypeDeserializer(new TabbedOutputContainerLayoutManagerDeserializer(serializer));
// serializer.addTypeDeserializer(new CyclingOutputContainerLayoutManagerDeserializer(serializer));
// serializer.addTypeDeserializer(new GridOutputContainerLayoutManagerDeserializer(serializer));
// serializer.addTypeDeserializer(new DashboardLayoutManagerDeserializer(serializer));
//
// } catch(Exception e) {
// logger.error("exception while creating ObjectSerializer", e);
// }
// return serializer;
// }
//
// @Provides
// @Singleton
// public ObjectMapper getObjectMapper(Injector injector) {
// ObjectMapper mapper = new ObjectMapper();
// try {
// SimpleModule module =
// new SimpleModule("MySerializer", new Version(1, 0, 0, null));
//
// // this is the root object we deserialize when reading from notebook namespace
// module.addDeserializer(NamespaceBinding.class, injector.getInstance(NamespaceBindingDeserializer.class));
// module.addDeserializer(BeakerCodeCellList.class, injector.getInstance(BeakerCodeCellListDeserializer.class));
//
// // all these objects can be returned as values and/or stored in the notebook namespace
// // module.addSerializer(SimpleEvaluationObject.class, injector.getInstance(SimpleEvaluationObject.Serializer.class));
// module.addSerializer(EvaluationResult.class, injector.getInstance(EvaluationResult.Serializer.class));
// module.addSerializer(UpdatableEvaluationResult.class, injector.getInstance(UpdatableEvaluationResult.Serializer.class));
// module.addSerializer(BeakerCodeCell.class, injector.getInstance(BeakerCodeCell.Serializer.class));
//
// module.addSerializer(TableDisplay.class, injector.getInstance(TableDisplaySerializer.class));
// module.addSerializer(DecimalStringFormat.class, injector.getInstance(DecimalStringFormatSerializer.class));
// module.addSerializer(TimeStringFormat.class, injector.getInstance(TimeStringFormatSerializer.class));
// module.addSerializer(ValueStringFormat.class, injector.getInstance(ValueStringFormatSerializer.class));
// module.addSerializer(DataBarsRenderer.class, injector.getInstance(DataBarsRendererSerializer.class));
// module.addSerializer(TableDisplayAlignmentProvider.class, injector.getInstance(TableDisplayAlignmentSerializer.class));
// module.addSerializer(HeatmapHighlighter.class, injector.getInstance(HeatmapHighlighterSerializer.class));
// module.addSerializer(ThreeColorHeatmapHighlighter.class, injector.getInstance(ThreeColorHeatmapHighlighterSerializer.class));
// module.addSerializer(UniqueEntriesHighlighter.class, injector.getInstance(UniqueEntriesHighlighterSerializer.class));
// module.addSerializer(ValueHighlighter.class, injector.getInstance(ValueHighlighterSerializer.class));
//
// module.addSerializer(OutputContainer.class, injector.getInstance(OutputContainerSerializer.class));
// module.addSerializer(OutputContainerCell.class, injector.getInstance(OutputContainerCellSerializer.class));
// module.addSerializer(OutputCell.State.class, injector.getInstance(OutputCellStateSerializer.class));
// module.addSerializer(SimpleLayoutManager.class, injector.getInstance(SimpleLayoutManagerSerializer.class));
// module.addSerializer(TabbedOutputContainerLayoutManager.class, injector.getInstance(TabbedOutputContainerLayoutManagerSerializer.class));
// module.addSerializer(GridOutputContainerLayoutManager.class, injector.getInstance(GridOutputContainerLayoutManagerSerializer.class));
// module.addSerializer(CyclingOutputContainerLayoutManager.class, injector.getInstance(CyclingOutputContainerLayoutManagerSerializer.class));
// module.addSerializer(DashboardLayoutManager.class, injector.getInstance(DashboardLayoutManagerSerializer.class));
// module.addSerializer(StringObject.class, injector.getInstance(StringObject.Serializer.class));
// module.addSerializer(BufferedImage.class, new BufferedImageSerializer());
// module.addSerializer(ImageIcon.class, new ImageIconSerializer());
// module.addSerializer(Date.class, new DateSerializer());
// module.addSerializer(BeakerDashboard.class, injector.getInstance(BeakerDashboard.Serializer.class));
//
// module.addSerializer(Color.class, injector.getInstance(ColorSerializer.class));
// module.addSerializer(GradientColor.class, injector.getInstance(GradientColorSerializer.class));
// module.addSerializer(XYChart.class, injector.getInstance(XYChartSerializer.class));
// module.addSerializer(CombinedPlot.class, injector.getInstance(CombinedPlotSerializer.class));
// module.addSerializer(Line.class, injector.getInstance(LineSerializer.class));
// module.addSerializer(Points.class, injector.getInstance(PointsSerializer.class));
// module.addSerializer(Bars.class, injector.getInstance(BarsSerializer.class));
// module.addSerializer(Stems.class, injector.getInstance(StemsSerializer.class));
// module.addSerializer(Area.class, injector.getInstance(AreaSerializer.class));
// module.addSerializer(YAxis.class, injector.getInstance(YAxisSerializer.class));
// module.addSerializer(Crosshair.class, injector.getInstance(CrosshairSerializer.class));
// module.addSerializer(LegendPosition.class, injector.getInstance(LegendPositionSerializer.class));
// module.addSerializer(Text.class, injector.getInstance(TextSerializer.class));
// module.addSerializer(ConstantLine.class, injector.getInstance(ConstantLineSerializer.class));
// module.addSerializer(ConstantBand.class, injector.getInstance(ConstantBandSerializer.class));
//
// module.addSerializer(EasyForm.class, injector.getInstance(EasyFormSerializer.class));
// module.addSerializer(TextField.class, injector.getInstance(TextFieldSerializer.class));
// module.addSerializer(TextArea.class, injector.getInstance(TextAreaSerializer.class));
// module.addSerializer(CheckBox.class, injector.getInstance(CheckBoxSerializer.class));
// module.addSerializer(ComboBox.class, injector.getInstance(ComboBoxSerializer.class));
// module.addSerializer(ListComponent.class, injector.getInstance(ListComponentSerializer.class));
// module.addSerializer(RadioButtonComponent.class, injector.getInstance(RadioButtonSerializer.class));
// module.addSerializer(CheckBoxGroup.class, injector.getInstance(CheckBoxGroupSerializer.class));
// module.addSerializer(DatePickerComponent.class, injector.getInstance(DatePickerComponentSerializer.class));
// module.addSerializer(ButtonComponent.class, injector.getInstance(ButtonComponentSerializer.class));
// module.addSerializer(LoadValuesButton.class, injector.getInstance(LoadValuesButtonSerializer.class));
// module.addSerializer(SaveValuesButton.class, injector.getInstance(SaveValuesButtonSerializer.class));
//
// module.addSerializer(CategoryBars.class, injector.getInstance(CategoryBarsSerializer.class));
// module.addSerializer(CategoryStems.class, injector.getInstance(CategoryStemsSerializer.class));
// module.addSerializer(CategoryPoints.class, injector.getInstance(CategoryPointsSerializer.class));
// module.addSerializer(CategoryLines.class, injector.getInstance(CategoryLinesSerializer.class));
// module.addSerializer(CategoryPlot.class, injector.getInstance(CategoryPlotSerializer.class));
//
// module.addSerializer(TreeMap.class, injector.getInstance(TreeMapSerializer.class));
// module.addSerializer(TreeMapNode.class, injector.getInstance(TreeMapNodeSerializer.class));
//
// module.addSerializer(Histogram.class, injector.getInstance(HistogramSerializer.class));
//
// module.addSerializer(HeatMap.class, injector.getInstance(HeatMapSerializer.class));
//
// mapper.registerModule(module);
//
// mapper.enable(SerializationFeature.INDENT_OUTPUT);
//
// // Manually serialize everything, either through mixin or serializer
// mapper.disable(MapperFeature.AUTO_DETECT_GETTERS);
// mapper.disable(MapperFeature.AUTO_DETECT_IS_GETTERS);
// mapper.disable(MapperFeature.AUTO_DETECT_FIELDS);
// mapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
//
// //NamespaceClient.setInjector(injector);
// } catch(Exception e) {
// logger.error("exception while creating ObjectMapper", e);
// }
// return mapper;
// }
//
// @Provides
// @Singleton
// public JacksonJsonProvider getJackson(ObjectMapper mapper) {
// return new JacksonJsonProvider(mapper);
// }
}