подклассы открытой -исходной библиотеки

Я использую большую библиотеку с открытым исходным кодом, и мне нужно создать личные подклассы нескольких классов. Каковы лучшие стратегии? Я хотел бы сохранить исходную библиотеку неизменной и иметь возможность легко переконфигурировать ее при обновлении. Маловероятно, что мой код стоит участия в проекте (, хотя я с удовольствием напишу так, чтобы это было возможно ).

Проблема общая, но я проиллюстрирую ее своим примером. Я использую Apache PDFBox , в котором есть процедура записи в java.awt.Graphics2D. Я заменил его набором инструментов Apache Batik , который предоставляет подкласс Graphics2D (org.apache.batik.svggen.SVGGraphics2D), поэтому я могу захватить представление SVG.Я создаю экземпляр

public static org.apache.batik.svggen.SVGGraphics2D createSVG() {
    org.w3c.dom.DOMImplementation domImpl =
    org.apache.batik.dom.GenericDOMImplementation.getDOMImplementation();
        org.w3c.dom.Document document = 
            domImpl.createDocument("http://www.w3.org/2000/svg", "svg", null);
        return new org.apache.batik.svggen.SVGGraphics2D(document);
    }

Место, где PDFBox использует графику, это org.apache.pdfbox.PDFReader, которое я отредактировал, чтобы разрешить новую графику:

    protected void showPage(int pageNumber)
{
    try 
    {
        PageDrawer drawer = new PageDrawer();
        PageWrapper wrapper = new PageWrapper( this );
        PDPage page = (PDPage)pages.get(pageNumber);
        wrapper.displayPage( page );
        PDRectangle cropBox = page.findCropBox();
        Dimension drawDimension = cropBox.createDimension();
        svg = PDFPagePanel.createSVG();          // MY EDIT!!!!!!!!!
        drawer.drawPage( svg, page, drawDimension );
        writeSVG(pageNumber);
    }
    catch (IOException exception)
    {
        exception.printStackTrace();
    }
}

Я заставил его работать (это не проблема ). Меня беспокоит то, что мне пришлось взломать/отредактировать и перекомпилировать ряд распределенных классов PDFBox просто для создания и использования подкласса. В итоге я получаю такие классы, как PMRPDFReader, в тех же пакетах, что и библиотека. Это очень грязно -Я не могу сразу вспомнить, где я делал правки и т. д.

Я чувствую, что должен иметь возможность использовать библиотеку как -и просто добавлять/связывать свои подклассы. Я использую maven, поэтому, возможно, есть способ исключить исходные классы.

6
задан peter.murray.rust 25 April 2012 в 08:35
поделиться