// Path: src/main/java/org/springframework/social/bitbucket/config/support/BitBucketApiHelper.java
// public class BitBucketApiHelper implements ApiHelper<BitBucket> {
//     private final UsersConnectionRepository usersConnectionRepository;
// 
//     private final UserIdSource userIdSource;
// 
//     private BitBucketApiHelper(
//             UsersConnectionRepository usersConnectionRepository,
//             UserIdSource userIdSource) {
//         this.usersConnectionRepository = usersConnectionRepository;
//         this.userIdSource = userIdSource;
//     }
// 
//     @Override
//     public BitBucket getApi() {
//         if (logger.isDebugEnabled()) {
//             logger.debug("Getting API binding instance for BitBucket");
//         }
// 
//         Connection<BitBucket> connection = usersConnectionRepository
//                 .createConnectionRepository(userIdSource.getUserId())
//                 .findPrimaryConnection(BitBucket.class);
//         if (logger.isDebugEnabled() && connection == null) {
//             logger.debug("No current connection; Returning default BitBucketTemplate instance.");
//         }
//         return connection != null ? connection.getApi() : null;
//     }
// 
//     private final static Log logger = LogFactory
//             .getLog(BitBucketApiHelper.class);
// }
// 
// Path: src/main/java/org/springframework/social/bitbucket/connect/BitBucketConnectionFactory.java
// public class BitBucketConnectionFactory extends
//         OAuth1ConnectionFactory<BitBucket> {
// 
//     public BitBucketConnectionFactory(String consumerKey, String consumerSecret) {
//         super("bitbucket", new BitBucketServiceProvider(consumerKey,
//                 consumerSecret), new BitBucketAdapter());
//     }
// }
// 
// Path: src/main/java/org/springframework/social/bitbucket/security/BitBucketAuthenticationService.java
// public class BitBucketAuthenticationService extends
//         OAuth1AuthenticationService<BitBucket> {
// 
//     public BitBucketAuthenticationService(String apiKey, String appSecret) {
//         super(new BitBucketConnectionFactory(apiKey, appSecret));
//     }
// 
// }


import org.springframework.social.bitbucket.config.support.BitBucketApiHelper;
import org.springframework.social.bitbucket.connect.BitBucketConnectionFactory;
import org.springframework.social.bitbucket.security.BitBucketAuthenticationService;
import org.springframework.social.config.xml.AbstractProviderConfigBeanDefinitionParser;
import org.springframework.social.security.provider.SocialAuthenticationService;
/*
 * Copyright 2013 the original author or authors.
 *
 * 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.springframework.social.bitbucket.config.xml;


/**
 * Implementation of {@link AbstractConnectionFactoryBeanDefinitionParser} that
 * creates a {@link BitBucketConnectionFactory}.
 * 
 * @author Eric Bottard
 */
public class BitBucketConfigBeanDefinitionParser extends
        AbstractProviderConfigBeanDefinitionParser {

    public BitBucketConfigBeanDefinitionParser() {
        super(BitBucketConnectionFactory.class, BitBucketApiHelper.class);
    }

    @Override
    protected Class<? extends SocialAuthenticationService<?>> getAuthenticationServiceClass() {
// Path: src/main/java/org/springframework/social/bitbucket/config/support/BitBucketApiHelper.java
// public class BitBucketApiHelper implements ApiHelper<BitBucket> {
//     private final UsersConnectionRepository usersConnectionRepository;
// 
//     private final UserIdSource userIdSource;
// 
//     private BitBucketApiHelper(
//             UsersConnectionRepository usersConnectionRepository,
//             UserIdSource userIdSource) {
//         this.usersConnectionRepository = usersConnectionRepository;
//         this.userIdSource = userIdSource;
//     }
// 
//     @Override
//     public BitBucket getApi() {
//         if (logger.isDebugEnabled()) {
//             logger.debug("Getting API binding instance for BitBucket");
//         }
// 
//         Connection<BitBucket> connection = usersConnectionRepository
//                 .createConnectionRepository(userIdSource.getUserId())
//                 .findPrimaryConnection(BitBucket.class);
//         if (logger.isDebugEnabled() && connection == null) {
//             logger.debug("No current connection; Returning default BitBucketTemplate instance.");
//         }
//         return connection != null ? connection.getApi() : null;
//     }
// 
//     private final static Log logger = LogFactory
//             .getLog(BitBucketApiHelper.class);
// }
// 
// Path: src/main/java/org/springframework/social/bitbucket/connect/BitBucketConnectionFactory.java
// public class BitBucketConnectionFactory extends
//         OAuth1ConnectionFactory<BitBucket> {
// 
//     public BitBucketConnectionFactory(String consumerKey, String consumerSecret) {
//         super("bitbucket", new BitBucketServiceProvider(consumerKey,
//                 consumerSecret), new BitBucketAdapter());
//     }
// }
// 
// Path: src/main/java/org/springframework/social/bitbucket/security/BitBucketAuthenticationService.java
// public class BitBucketAuthenticationService extends
//         OAuth1AuthenticationService<BitBucket> {
// 
//     public BitBucketAuthenticationService(String apiKey, String appSecret) {
//         super(new BitBucketConnectionFactory(apiKey, appSecret));
//     }
// 
// }


// Path: src/main/java/org/springframework/social/bitbucket/config/xml/BitBucketConfigBeanDefinitionParser.java
import org.springframework.social.bitbucket.config.support.BitBucketApiHelper;
import org.springframework.social.bitbucket.connect.BitBucketConnectionFactory;
import org.springframework.social.bitbucket.security.BitBucketAuthenticationService;
import org.springframework.social.config.xml.AbstractProviderConfigBeanDefinitionParser;
import org.springframework.social.security.provider.SocialAuthenticationService;

/*
 * Copyright 2013 the original author or authors.
 *
 * 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.springframework.social.bitbucket.config.xml;


/**
 * Implementation of {@link AbstractConnectionFactoryBeanDefinitionParser} that
 * creates a {@link BitBucketConnectionFactory}.
 * 
 * @author Eric Bottard
 */
public class BitBucketConfigBeanDefinitionParser extends
        AbstractProviderConfigBeanDefinitionParser {

    public BitBucketConfigBeanDefinitionParser() {
        super(BitBucketConnectionFactory.class, BitBucketApiHelper.class);
    }

    @Override
    protected Class<? extends SocialAuthenticationService<?>> getAuthenticationServiceClass() {
        return BitBucketAuthenticationService.class;