001/*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements.  See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License.  You may obtain a copy of the License at
008 *
009 *      http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017package org.apache.camel.util.blueprint;
018
019import java.util.Set;
020
021import javax.xml.bind.annotation.XmlRootElement;
022import javax.xml.bind.annotation.XmlTransient;
023import javax.xml.bind.annotation.XmlType;
024
025import org.apache.camel.CamelContext;
026import org.apache.camel.blueprint.BlueprintCamelContextLookupHelper;
027import org.apache.camel.core.xml.util.jsse.AbstractSSLContextParametersFactoryBean;
028import org.osgi.service.blueprint.container.BlueprintContainer;
029
030@XmlRootElement(name = "sslContextParameters")
031@XmlType(propOrder = {})
032public class SSLContextParametersFactoryBean extends AbstractSSLContextParametersFactoryBean {
033    
034    private KeyManagersParametersFactoryBean keyManagers;
035    private TrustManagersParametersFactoryBean trustManagers;
036    private SecureRandomParametersFactoryBean secureRandom;
037    private SSLContextClientParametersFactoryBean clientParameters;
038    private SSLContextServerParametersFactoryBean serverParameters;
039    @XmlTransient
040    private BlueprintContainer blueprintContainer;
041
042    @Override
043    public KeyManagersParametersFactoryBean getKeyManagers() {
044        return keyManagers;
045    }
046    
047    public void setKeyManagers(KeyManagersParametersFactoryBean keyManagers) {
048        this.keyManagers = keyManagers;
049    }
050
051    @Override
052    public TrustManagersParametersFactoryBean getTrustManagers() {
053        return trustManagers;
054    }
055    
056    public void setTrustManagers(TrustManagersParametersFactoryBean trustManagers) {
057        this.trustManagers = trustManagers;
058    }
059
060    @Override
061    public SecureRandomParametersFactoryBean getSecureRandom() {
062        return secureRandom;
063    }
064
065    public void setSecureRandom(SecureRandomParametersFactoryBean secureRandom) {
066        this.secureRandom = secureRandom;
067    }
068
069    @Override
070    public SSLContextClientParametersFactoryBean getClientParameters() {
071        return clientParameters;
072    }
073
074    public void setClientParameters(SSLContextClientParametersFactoryBean clientParameters) {
075        this.clientParameters = clientParameters;
076    }
077
078    @Override
079    public SSLContextServerParametersFactoryBean getServerParameters() {
080        return serverParameters;
081    }
082    
083    public void setServerParameters(SSLContextServerParametersFactoryBean serverParameters) {
084        this.serverParameters = serverParameters;
085    }
086    
087    public void setBlueprintContainer(BlueprintContainer blueprintContainer) {
088        this.blueprintContainer = blueprintContainer;
089    }
090    
091    @Override
092    protected CamelContext getCamelContextWithId(String camelContextId) {
093        if (blueprintContainer != null) {
094            return (CamelContext) blueprintContainer.getComponentInstance(camelContextId);
095        }
096        return null;
097    }
098
099    @Override
100    protected CamelContext discoverDefaultCamelContext() {
101        if (blueprintContainer != null) {
102            Set<String> ids = BlueprintCamelContextLookupHelper.lookupBlueprintCamelContext(blueprintContainer);
103            if (ids.size() == 1) {
104                // there is only 1 id for a BlueprintCamelContext so fallback and use this
105                return getCamelContextWithId(ids.iterator().next());
106            }
107        }
108        return null;
109    }
110}