Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 /*
  *  Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
  * regarding copyright ownership.  The ASF licenses this file
  * to you 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 com.github.rodionmoiseev.c10n;

Author(s):
rodion
public class DefaultConfigChainResolver implements ConfigChainResolver {
    private static final Comparator<C10NConfigBasecmpByConfPkgName = new C10NConfigBaseComparator();
    private final C10NConfigBase parentConfig;
    public DefaultConfigChainResolver(C10NConfigBase parentConfig) {
        this. = parentConfig;
    }
    @Override
    public List<C10NConfigBaseresolve(Class<?> c10nInterface) {
        List<C10NConfigBaseres = new ArrayList<C10NConfigBase>();
        traverse(c10nInterfaceres);
        Collections.sort(res);
        return res;
    }
    private void traverse(C10NConfigBase configClass<?> c10nInterfaceList<C10NConfigBaseresult) {
        result.add(config);
        for (C10NConfigBase childConfig : config.getChildConfigs()) {
            if (isPackageAncestorOf(childConfigc10nInterface)) {
                traverse(childConfigc10nInterfaceresult);
            }
        }
    }
    private boolean isPackageAncestorOf(C10NConfigBase configClass<?> c10nInterface) {
        String c10nPackage = c10nInterface.getPackage().getName();
        String configPackage = config.getConfigurationPackage();
        return c10nPackage.startsWith(configPackage);
    }
    private static final class C10NConfigBaseComparator implements Comparator<C10NConfigBase> {
        @Override
        public int compare(C10NConfigBase o1C10NConfigBase o2) {
            //reverse the comparison order for package names
            int cmp = -1 * o1.getConfigurationPackage().compareTo(o2.getConfigurationPackage());
            if (0 == cmp) {
                cmp = o1.getClass().getSimpleName().compareTo(o2.getClass().getSimpleName());
            }
            return cmp;
        }
    }
New to GrepCode? Check out our FAQ X