001    // Copyright 2007 The Apache Software Foundation
002    //
003    // Licensed under the Apache License, Version 2.0 (the "License");
004    // you may not use this file except in compliance with the License.
005    // You may obtain a copy of the License at
006    //
007    //     http://www.apache.org/licenses/LICENSE-2.0
008    //
009    // Unless required by applicable law or agreed to in writing, software
010    // distributed under the License is distributed on an "AS IS" BASIS,
011    // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012    // See the License for the specific language governing permissions and
013    // limitations under the License.
014    
015    package org.apache.tapestry5.internal;
016    
017    import org.apache.tapestry5.ioc.def.ContributionDef;
018    import org.apache.tapestry5.ioc.def.DecoratorDef;
019    import org.apache.tapestry5.ioc.def.ModuleDef;
020    import org.apache.tapestry5.ioc.def.ServiceDef;
021    import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
022    
023    import java.util.Collections;
024    import java.util.Set;
025    
026    /**
027     * A synthetic module definition, used to mix in some additional "pre-built" service configuration contributions.
028     */
029    public class SyntheticModuleDef implements ModuleDef
030    {
031        private final Set<ContributionDef> contributionDefs;
032    
033        public SyntheticModuleDef(ContributionDef... contributionDefs)
034        {
035            this.contributionDefs = CollectionFactory.newSet(contributionDefs);
036        }
037    
038        /**
039         * Returns null.
040         */
041        public Class getBuilderClass()
042        {
043            return null;
044        }
045    
046        /**
047         * Returns the configured set.
048         */
049        public Set<ContributionDef> getContributionDefs()
050        {
051            return contributionDefs;
052        }
053    
054        /**
055         * Returns an empty set.
056         */
057        public Set<DecoratorDef> getDecoratorDefs()
058        {
059            return Collections.emptySet();
060        }
061    
062        /**
063         * Returns "SyntheticModule".
064         */
065        public String getLoggerName()
066        {
067            return "SyntheticModule";
068        }
069    
070        /**
071         * Returns null.
072         */
073        public ServiceDef getServiceDef(String serviceId)
074        {
075            return null;
076        }
077    
078        /**
079         * Returns an empty set.
080         */
081        public Set<String> getServiceIds()
082        {
083            return Collections.emptySet();
084        }
085    }