01: /*
02: * The contents of this file are subject to the terms of the Common Development
03: * and Distribution License (the License). You may not use this file except in
04: * compliance with the License.
05: *
06: * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
07: * or http://www.netbeans.org/cddl.txt.
08: *
09: * When distributing Covered Code, include this CDDL Header Notice in each file
10: * and include the License file at http://www.netbeans.org/cddl.txt.
11: * If applicable, add the following below the CDDL Header, with the fields
12: * enclosed by brackets [] replaced by your own identifying information:
13: * "Portions Copyrighted [year] [name of copyright owner]"
14: *
15: * The Original Software is NetBeans. The Initial Developer of the Original
16: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
17: * Microsystems, Inc. All Rights Reserved.
18: */
19: package org.netbeans.modules.xslt.tmap.model.impl;
20:
21: import org.netbeans.modules.xslt.tmap.model.api.Invoke;
22: import org.netbeans.modules.xslt.tmap.model.api.Operation;
23: import org.netbeans.modules.xslt.tmap.model.api.Param;
24: import org.netbeans.modules.xslt.tmap.model.api.Service;
25: import org.netbeans.modules.xslt.tmap.model.api.TMapComponent;
26: import org.netbeans.modules.xslt.tmap.model.api.TMapComponentFactory;
27: import org.netbeans.modules.xslt.tmap.model.api.Transform;
28: import org.netbeans.modules.xslt.tmap.model.api.TransformMap;
29: import org.w3c.dom.Element;
30:
31: /**
32: *
33: * @author Vitaly Bychkov
34: * @version 1.0
35: */
36: public class TMapComponentFactoryImpl implements TMapComponentFactory {
37:
38: private TMapModelImpl myModel;
39: private ThreadLocal<TMapComponentBuildVisitor> myBuilder;
40:
41: public TMapComponentFactoryImpl(TMapModelImpl model) {
42: this .myModel = model;
43: myBuilder = new ThreadLocal<TMapComponentBuildVisitor>();
44: }
45:
46: public TransformMap createTransformMap() {
47: return new TransformMapImpl(getModel());
48: }
49:
50: public Service createService() {
51: return new ServiceImpl(getModel());
52: }
53:
54: public Operation createOperation() {
55: return new OperationImpl(getModel());
56: }
57:
58: public Invoke createInvoke() {
59: return new InvokeImpl(getModel());
60: }
61:
62: public Transform createTransform() {
63: return new TransformImpl(getModel());
64: }
65:
66: public Param createParam() {
67: return new ParamImpl(getModel());
68: }
69:
70: public TMapComponent create(Element child, TMapComponent parent) {
71: TMapComponentBuildVisitor visitor = getBuilder();
72: return visitor.createSubComponent(parent, child);
73: }
74:
75: private TMapComponentBuildVisitor getBuilder() {
76: TMapComponentBuildVisitor visitor = myBuilder.get();
77: if (visitor == null) {
78: visitor = new TMapComponentBuildVisitor(getModel());
79: myBuilder.set(visitor);
80: }
81: visitor.init();
82: return visitor;
83: }
84:
85: private TMapModelImpl getModel() {
86: return myModel;
87: }
88: }
|