001: /*
002: * BEGIN_HEADER - DO NOT EDIT
003: *
004: * The contents of this file are subject to the terms
005: * of the Common Development and Distribution License
006: * (the "License"). You may not use this file except
007: * in compliance with the License.
008: *
009: * You can obtain a copy of the license at
010: * https://open-esb.dev.java.net/public/CDDLv1.0.html.
011: * See the License for the specific language governing
012: * permissions and limitations under the License.
013: *
014: * When distributing Covered Code, include this CDDL
015: * HEADER in each file and include the License file at
016: * https://open-esb.dev.java.net/public/CDDLv1.0.html.
017: * If applicable add the following below this CDDL HEADER,
018: * with the fields enclosed by brackets "[]" replaced with
019: * your own identifying information: Portions Copyright
020: * [year] [name of copyright owner]
021: */
022:
023: /*
024: * @(#)TemplateCommand.java
025: * Copyright 2004-2007 Sun Microsystems, Inc. All Rights Reserved.
026: *
027: * END_HEADER - DO NOT EDIT
028: */
029: package com.sun.jbi.engine.xslt;
030:
031: import com.sun.jbi.engine.xslt.framework.Command;
032: import com.sun.jbi.engine.xslt.util.StringTranslator;
033: import com.sun.jbi.engine.xslt.TransformationEngineContext;
034:
035: import java.util.logging.Logger;
036:
037: import javax.xml.transform.Source;
038: import javax.xml.transform.Templates;
039: import javax.xml.transform.TransformerConfigurationException;
040: import javax.xml.transform.TransformerFactory;
041:
042: /**
043: * This command contains the request response implementation.
044: *
045: * @author Sun Microsystems, Inc.
046: */
047: public class TemplateCommand implements Command, TEResources {
048: /**
049: * This is logger instance used for logging information.
050: */
051: private Logger mLogger = null;
052:
053: /**
054: *
055: */
056: private Source mSource = null;
057:
058: /**
059: *
060: */
061: private String mService = null;
062:
063: /**
064: *
065: */
066: private StringTranslator mTranslator = null;
067:
068: /**
069: * Construtor for creating TemplateCommand Object.
070: *
071: * @param key for replying back to sender
072: * @param xslt received by the sender.
073: */
074: public TemplateCommand(String key, Source xslt) {
075: mTranslator = new StringTranslator("com.sun.jbi.engine.xslt",
076: this .getClass().getClassLoader());
077:
078: // Do any command specific init.
079: mLogger = TransformationEngineContext.getInstance().getLogger(
080: "");
081: mLogger
082: .info(mTranslator
083: .getString(TEResources.TEMPLATECOMMAND_CONSTRUCTOR_START));
084: mSource = xslt;
085: mService = key;
086: mLogger
087: .info(mTranslator
088: .getString(TEResources.TEMPLATECOMMAND_CONSTRUCTOR_END));
089: }
090:
091: /**
092: * This is called by workmanager in a free thread. It extracts the symbol
093: * from the normalized message, processes it and generates response or
094: * fault depending upon the input message.
095: */
096: public void execute() {
097: mLogger.info(mTranslator
098: .getString(TEResources.TEMPLATECOMMAND_EXECUTE_START));
099:
100: TransformerFactory tfactory = null;
101: TransformationImpl impl = null;
102:
103: while (tfactory == null) {
104: mLogger.severe(mTranslator
105: .getString(TEResources.GET_TRANSFORMER_FACTORY));
106:
107: try {
108: impl = (TransformationImpl) TransformationProcessorFactory
109: .getImpl();
110: tfactory = (TransformerFactory) (impl
111: .getTransformerFactory());
112: } catch (NullPointerException ex) {
113: mLogger
114: .severe(mTranslator
115: .getString(TEResources.GOT_NULLPOINTEREXCEPTION));
116: }
117: }
118:
119: try {
120: Templates tpl = tfactory.newTemplates(mSource);
121:
122: //impl.putTransformerFactory(tfactory);
123: TemplateRegistry.getRegistry().put(mService, tpl);
124: } catch (TransformerConfigurationException ex) {
125: mLogger.severe(mTranslator
126: .getString(TEResources.COMPILATION_OF_XSLT));
127: } finally {
128: impl.putTransformerFactory(tfactory);
129: }
130:
131: mLogger.info(mTranslator
132: .getString(TEResources.TEMPLATECOMMAND_EXECUTE_END));
133: }
134: }
|