1 /* 2 * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package com.sun.tools.internal.xjc.generator.bean; 27 28 import javax.xml.bind.JAXBContext; 29 30 import com.sun.codemodel.internal.JClass; 31 import com.sun.codemodel.internal.JPackage; 32 import com.sun.codemodel.internal.fmt.JPropertyFile; 33 import com.sun.tools.internal.xjc.model.CElementInfo; 34 import com.sun.tools.internal.xjc.model.Model; 35 import com.sun.tools.internal.xjc.model.Aspect; 36 import com.sun.tools.internal.xjc.runtime.JAXBContextFactory; 37 38 /** 39 * Generates private ObjectFactory. 40 * 41 * <p> 42 * This class also puts a copy of {@link JAXBContextFactory} 43 * to the impl package. 44 * 45 * @author Kohsuke Kawaguchi 46 */ 47 final class PrivateObjectFactoryGenerator extends ObjectFactoryGeneratorImpl { 48 public PrivateObjectFactoryGenerator(BeanGenerator outline, Model model, JPackage targetPackage) { 49 super(outline, model, targetPackage.subPackage("impl")); 50 51 JPackage implPkg = targetPackage.subPackage("impl"); 52 53 // put JAXBContextFactory into the impl package 54 JClass factory = outline.generateStaticClass(JAXBContextFactory.class,implPkg); 55 56 // and then put jaxb.properties to point to it 57 JPropertyFile jaxbProperties = new JPropertyFile("jaxb.properties"); 58 targetPackage.addResourceFile(jaxbProperties); 59 jaxbProperties.add( 60 JAXBContext.JAXB_CONTEXT_FACTORY, 61 factory.fullName()); 62 } 63 64 void populate(CElementInfo ei) { 65 populate(ei,Aspect.IMPLEMENTATION,Aspect.IMPLEMENTATION); 66 } 67 68 void populate(ClassOutlineImpl cc) { 69 populate(cc,cc.implRef); 70 } 71 }