summaryrefslogtreecommitdiffstats
path: root/sandbox/container.groovy/src/main/java/org/apache/tuscany/container/extension/config/AbstractContextFactory.java
blob: cf0e722c62b881131f28ae7bf11651bbfd81da06 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
/**
 *
 *  Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */
package org.apache.tuscany.container.extension.config;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.tuscany.core.builder.ContextFactory;
import org.apache.tuscany.core.context.AtomicContext;
import org.apache.tuscany.core.context.CompositeContext;
import org.apache.tuscany.core.wire.SourceWireFactory;
import org.apache.tuscany.core.wire.TargetWireFactory;
import org.apache.tuscany.model.assembly.Scope;

/**
 * Abstract context factory.
 */
public abstract class AbstractContextFactory<T extends AtomicContext> implements ContextFactory<T> {

	// Context scope
    private Scope scope;

    // Context name
    private String name;

    // SOurce proxy factories
    private List<SourceWireFactory> sourceProxyFactories = new ArrayList<SourceWireFactory>();
    
    // Target proxy factories
    private Map<String, TargetWireFactory> targetProxyFactories = new HashMap<String, TargetWireFactory>();
    
    /**
     * Initializes the context factory.
     * 
     * @param name Context name.
     * @param scope Context scope.
     * @param groovyScript Groovy script to run.
     */
    public AbstractContextFactory(String name, Scope scope) {
        this.name = name;
        this.scope = scope;
    }

    /**
     * Returns the context scope.
     * @return Context scope.
     */
    public final Scope getScope() {
        return scope;
    }

    /**
     * Returns the context name.
     * @return Context name.
     */
    public final String getName() {
        return name;
    }

    /**
     * Adds a property.
     * 
     * @param propertyName Property name.
     * @param value Property value.
     */
    public final void addProperty(String propertyName, Object value) {
    }

    /**
     * Adds a target proxy factory.
     * 
     * @param serviceName Service name.
     * @param factory Target proxy factory.
     */
    public final void addTargetWireFactory(String serviceName, TargetWireFactory factory) {
        targetProxyFactories.put(serviceName, factory);
    }

    /**
     * Gets a target proxy factory by name.
     * 
     * @param serviceName Service name.
     * @return Target wire factory for the specified service.
     */
    public final TargetWireFactory getTargetWireFactory(String serviceName) {
        return targetProxyFactories.get(serviceName);
    }

    /**
     * Returns all the target wire factories.
     * @return All the target wire factories for the context.
     */
    public final Map<String, TargetWireFactory> getTargetWireFactories() {
        return targetProxyFactories;
    }

    /**
     * Adds a source wire factory.
     * 
     * @param referenceName Reference name.
     * @param factory SOurce wire factory.
     */
    public final void addSourceWireFactory(String referenceName, SourceWireFactory factory) {
        sourceProxyFactories.add(factory);
    }

    /**
     * Adds all source wire factories.
     */
    public final void addSourceWireFactories(String referenceName, Class referenceInterface, List<SourceWireFactory> factory, boolean multiplicity) {
    	sourceProxyFactories.addAll(factory);
    }

    /**
     * Returns all the source wire factories.
     */
    public final List<SourceWireFactory> getSourceWireFactories() {
        return sourceProxyFactories;
    }

    /**
     * Notification that the parent factory has been activated.
     */
    public final void prepare(CompositeContext parent) {
    }

}