< prev index next >

jaxp/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/trax/TemplatesImpl.java

Print this page




  41 import java.lang.module.Configuration;
  42 import java.lang.module.ModuleDescriptor;
  43 import java.lang.module.ModuleFinder;
  44 import java.lang.module.ModuleReference;
  45 import java.lang.reflect.Layer;
  46 import java.lang.reflect.Module;
  47 import java.security.AccessController;
  48 import java.security.PrivilegedAction;
  49 import java.util.Arrays;
  50 import java.util.HashMap;
  51 import java.util.Map;
  52 import java.util.Optional;
  53 import java.util.Properties;
  54 import java.util.Set;
  55 import javax.xml.XMLConstants;
  56 import javax.xml.transform.Templates;
  57 import javax.xml.transform.Transformer;
  58 import javax.xml.transform.TransformerConfigurationException;
  59 import javax.xml.transform.URIResolver;
  60 
  61 import jdk.internal.module.Modules;
  62 
  63 /**
  64  * @author Morten Jorgensen
  65  * @author G. Todd Millerj
  66  * @author Jochen Cordes <Jochen.Cordes@t-online.de>
  67  * @author Santiago Pericas-Geertsen
  68  */
  69 public final class TemplatesImpl implements Templates, Serializable {
  70     static final long serialVersionUID = 673094361519270707L;
  71     public final static String DESERIALIZE_TRANSLET = "jdk.xml.enableTemplatesImplDeserialization";
  72 
  73     /**
  74      * Name of the superclass of all translets. This is needed to
  75      * determine which, among all classes comprising a translet,
  76      * is the main one.
  77      */
  78     private static String ABSTRACT_TRANSLET
  79         = "com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet";
  80 
  81     /**


 469 
 470             String mn = "jdk.translet";
 471 
 472             String pn = _tfactory.getPackageName();
 473             assert pn != null && pn.length() > 0;
 474 
 475             ModuleDescriptor descriptor
 476                 = new ModuleDescriptor.Builder(mn)
 477                     .requires("java.xml")
 478                     .exports(pn)
 479                     .build();
 480 
 481             Module m = createModule(descriptor, loader);
 482 
 483             // the module needs access to runtime classes
 484             Module thisModule = TemplatesImpl.class.getModule();
 485             Arrays.asList(Constants.PKGS_USED_BY_TRANSLET_CLASSES).forEach(p -> {
 486                 thisModule.addExports(p, m);
 487             });
 488 
 489             // For now, the module reads all unnnamed modules. This will be changed once
 490             // the XSLT compiler is updated to generate code to invoke addReads.
 491             Modules.addReadsAllUnnamed(m);
 492 
 493             // java.xml needs to instanitate the translet class
 494             thisModule.addReads(m);
 495 
 496             for (int i = 0; i < classCount; i++) {
 497                 _class[i] = loader.defineClass(_bytecodes[i]);
 498                 final Class superClass = _class[i].getSuperclass();
 499 
 500                 // Check if this is the main class
 501                 if (superClass.getName().equals(ABSTRACT_TRANSLET)) {
 502                     _transletIndex = i;
 503                 }
 504                 else {
 505                     _auxClasses.put(_class[i].getName(), _class[i]);
 506                 }
 507             }
 508 
 509             if (_transletIndex < 0) {
 510                 ErrorMsg err= new ErrorMsg(ErrorMsg.NO_MAIN_TRANSLET_ERR, _name);
 511                 throw new TransformerConfigurationException(err.toString());
 512             }




  41 import java.lang.module.Configuration;
  42 import java.lang.module.ModuleDescriptor;
  43 import java.lang.module.ModuleFinder;
  44 import java.lang.module.ModuleReference;
  45 import java.lang.reflect.Layer;
  46 import java.lang.reflect.Module;
  47 import java.security.AccessController;
  48 import java.security.PrivilegedAction;
  49 import java.util.Arrays;
  50 import java.util.HashMap;
  51 import java.util.Map;
  52 import java.util.Optional;
  53 import java.util.Properties;
  54 import java.util.Set;
  55 import javax.xml.XMLConstants;
  56 import javax.xml.transform.Templates;
  57 import javax.xml.transform.Transformer;
  58 import javax.xml.transform.TransformerConfigurationException;
  59 import javax.xml.transform.URIResolver;
  60 

  61 
  62 /**
  63  * @author Morten Jorgensen
  64  * @author G. Todd Millerj
  65  * @author Jochen Cordes <Jochen.Cordes@t-online.de>
  66  * @author Santiago Pericas-Geertsen
  67  */
  68 public final class TemplatesImpl implements Templates, Serializable {
  69     static final long serialVersionUID = 673094361519270707L;
  70     public final static String DESERIALIZE_TRANSLET = "jdk.xml.enableTemplatesImplDeserialization";
  71 
  72     /**
  73      * Name of the superclass of all translets. This is needed to
  74      * determine which, among all classes comprising a translet,
  75      * is the main one.
  76      */
  77     private static String ABSTRACT_TRANSLET
  78         = "com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet";
  79 
  80     /**


 468 
 469             String mn = "jdk.translet";
 470 
 471             String pn = _tfactory.getPackageName();
 472             assert pn != null && pn.length() > 0;
 473 
 474             ModuleDescriptor descriptor
 475                 = new ModuleDescriptor.Builder(mn)
 476                     .requires("java.xml")
 477                     .exports(pn)
 478                     .build();
 479 
 480             Module m = createModule(descriptor, loader);
 481 
 482             // the module needs access to runtime classes
 483             Module thisModule = TemplatesImpl.class.getModule();
 484             Arrays.asList(Constants.PKGS_USED_BY_TRANSLET_CLASSES).forEach(p -> {
 485                 thisModule.addExports(p, m);
 486             });
 487 




 488             // java.xml needs to instanitate the translet class
 489             thisModule.addReads(m);
 490 
 491             for (int i = 0; i < classCount; i++) {
 492                 _class[i] = loader.defineClass(_bytecodes[i]);
 493                 final Class superClass = _class[i].getSuperclass();
 494 
 495                 // Check if this is the main class
 496                 if (superClass.getName().equals(ABSTRACT_TRANSLET)) {
 497                     _transletIndex = i;
 498                 }
 499                 else {
 500                     _auxClasses.put(_class[i].getName(), _class[i]);
 501                 }
 502             }
 503 
 504             if (_transletIndex < 0) {
 505                 ErrorMsg err= new ErrorMsg(ErrorMsg.NO_MAIN_TRANSLET_ERR, _name);
 506                 throw new TransformerConfigurationException(err.toString());
 507             }


< prev index next >