507 */
508 @Override
509 public void setFeature(String name, boolean value)
510 throws TransformerConfigurationException {
511
512 // feature name cannot be null
513 if (name == null) {
514 ErrorMsg err = new ErrorMsg(ErrorMsg.JAXP_SET_FEATURE_NULL_NAME);
515 throw new NullPointerException(err.toString());
516 }
517 // secure processing?
518 else if (name.equals(XMLConstants.FEATURE_SECURE_PROCESSING)) {
519 if ((_isSecureMode) && (!value)) {
520 ErrorMsg err = new ErrorMsg(ErrorMsg.JAXP_SECUREPROCESSING_FEATURE);
521 throw new TransformerConfigurationException(err.toString());
522 }
523 _isNotSecureProcessing = !value;
524 _xmlSecurityManager.setSecureProcessing(value);
525
526 // set external access restriction when FSP is explicitly set
527 if (value && XalanConstants.IS_JDK8_OR_ABOVE) {
528 _xmlSecurityPropertyMgr.setValue(Property.ACCESS_EXTERNAL_DTD,
529 State.FSP, XalanConstants.EXTERNAL_ACCESS_DEFAULT_FSP);
530 _xmlSecurityPropertyMgr.setValue(Property.ACCESS_EXTERNAL_STYLESHEET,
531 State.FSP, XalanConstants.EXTERNAL_ACCESS_DEFAULT_FSP);
532 _accessExternalDTD = _xmlSecurityPropertyMgr.getValue(
533 Property.ACCESS_EXTERNAL_DTD);
534 _accessExternalStylesheet = _xmlSecurityPropertyMgr.getValue(
535 Property.ACCESS_EXTERNAL_STYLESHEET);
536 }
537
538 if (value && _featureManager != null) {
539 _featureManager.setValue(FeatureManager.Feature.ORACLE_ENABLE_EXTENSION_FUNCTION,
540 FeaturePropertyBase.State.FSP, XalanConstants.FEATURE_FALSE);
541 }
542 return;
543 }
544 else if (name.equals(XalanConstants.ORACLE_FEATURE_SERVICE_MECHANISM)) {
545 //in secure mode, let _useServicesMechanism be determined by the constructor
546 if (!_isSecureMode)
547 _useServicesMechanism = value;
548 }
549 else {
550 if (_featureManager != null &&
551 _featureManager.setValue(name, State.APIPROPERTY, value)) {
552 return;
553 }
554
555 // unknown feature
556 ErrorMsg err = new ErrorMsg(ErrorMsg.JAXP_UNSUPPORTED_FEATURE, name);
557 throw new TransformerConfigurationException(err.toString());
558 }
559 }
560
561 /**
562 * javax.xml.transform.sax.TransformerFactory implementation.
|
507 */
508 @Override
509 public void setFeature(String name, boolean value)
510 throws TransformerConfigurationException {
511
512 // feature name cannot be null
513 if (name == null) {
514 ErrorMsg err = new ErrorMsg(ErrorMsg.JAXP_SET_FEATURE_NULL_NAME);
515 throw new NullPointerException(err.toString());
516 }
517 // secure processing?
518 else if (name.equals(XMLConstants.FEATURE_SECURE_PROCESSING)) {
519 if ((_isSecureMode) && (!value)) {
520 ErrorMsg err = new ErrorMsg(ErrorMsg.JAXP_SECUREPROCESSING_FEATURE);
521 throw new TransformerConfigurationException(err.toString());
522 }
523 _isNotSecureProcessing = !value;
524 _xmlSecurityManager.setSecureProcessing(value);
525
526 // set external access restriction when FSP is explicitly set
527 if (value) {
528 _xmlSecurityPropertyMgr.setValue(Property.ACCESS_EXTERNAL_DTD,
529 State.FSP, XalanConstants.EXTERNAL_ACCESS_DEFAULT_FSP);
530 _xmlSecurityPropertyMgr.setValue(Property.ACCESS_EXTERNAL_STYLESHEET,
531 State.FSP, XalanConstants.EXTERNAL_ACCESS_DEFAULT_FSP);
532 _accessExternalDTD = _xmlSecurityPropertyMgr.getValue(
533 Property.ACCESS_EXTERNAL_DTD);
534 _accessExternalStylesheet = _xmlSecurityPropertyMgr.getValue(
535 Property.ACCESS_EXTERNAL_STYLESHEET);
536 }
537
538 if (value && _featureManager != null) {
539 _featureManager.setValue(FeatureManager.Feature.ORACLE_ENABLE_EXTENSION_FUNCTION,
540 FeaturePropertyBase.State.FSP, XalanConstants.FEATURE_FALSE);
541 }
542 }
543 else if (name.equals(XalanConstants.ORACLE_FEATURE_SERVICE_MECHANISM)) {
544 //in secure mode, let _useServicesMechanism be determined by the constructor
545 if (!_isSecureMode)
546 _useServicesMechanism = value;
547 }
548 else {
549 if (_featureManager != null &&
550 _featureManager.setValue(name, State.APIPROPERTY, value)) {
551 return;
552 }
553
554 // unknown feature
555 ErrorMsg err = new ErrorMsg(ErrorMsg.JAXP_UNSUPPORTED_FEATURE, name);
556 throw new TransformerConfigurationException(err.toString());
557 }
558 }
559
560 /**
561 * javax.xml.transform.sax.TransformerFactory implementation.
|