Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2014-2015 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.lastaflute.di.core.util;
 
 import java.util.Set;
 
トラバースするためのクラスです。

Author(s):
modified by jflute (originated in Seasar)
 
 public class Traversal {

    
org.lastaflute.di.core.LaContainerを処理するためのインターフェースです。
 
     public static interface S2ContainerHandler {
        
org.lastaflute.di.core.LaContainerを処理します。

Parameters:
container
Returns:
処理した結果
 
         Object processContainer(LaContainer container);
     }

    
org.lastaflute.di.core.ComponentDefを処理するためのインターフェースです。
 
     public static interface ComponentDefHandler {
        
org.lastaflute.di.core.ComponentDefを処理します。

Parameters:
componentDef
Returns:
処理した結果
 
         Object processComponent(ComponentDef componentDef);
     }

    
コンポーネントをトラバースします。

 
     public static Object forEachComponent(final LaContainer containerfinal ComponentDefHandler handler) {
         return forEachComponent(containerhandlertrue);
     }

    
コンポーネントをトラバースします。

Parameters:
container
handler
parentFirst
Returns:
処理した結果
 
     public static Object forEachComponent(final LaContainer containerfinal ComponentDefHandler handlerfinal boolean parentFirst) {
         return forEachContainer(containernew S2ContainerHandler() {
             public Object processContainer(final LaContainer container) {
                 for (int i = 0; i < container.getComponentDefSize(); ++i) {
                     final Object result = handler.processComponent(container.getComponentDef(i));
                     if (result != null) {
                         return result;
                     }
                 }
                 return null;
             }
         }, parentFirst);
     }

    
    public static Object forEachContainer(final LaContainer containerfinal S2ContainerHandler handler) {
        return forEachContainer(containerhandlertruenew HashSet());
    }

    
    public static Object forEachContainer(final LaContainer containerfinal S2ContainerHandler handlerfinal boolean parentFirst) {
        return forEachContainer(containerhandlerparentFirstnew HashSet());
    }

    
org.lastaflute.di.core.LaContainerをトラバースします。

Parameters:
container
handler
parentFirst
processed
Returns:
処理した結果
    protected static Object forEachContainer(final LaContainer containerfinal S2ContainerHandler handlerfinal boolean parentFirst,
            final Set processed) {
        if (parentFirst) {
            final Object result = handler.processContainer(container);
            if (result != null) {
                return result;
            }
        }
        for (int i = 0; i < container.getChildSize(); ++i) {
            final LaContainer child = container.getChild(i);
            if (processed.contains(child)) {
                continue;
            }
            processed.add(child);
            final Object result = forEachContainer(childhandlerparentFirstprocessed);
            if (result != null) {
                return result;
            }
        }
        if (!parentFirst) {
            return handler.processContainer(container);
        }
        return null;
    }

    
    public static Object forEachParentContainer(final LaContainer containerfinal S2ContainerHandler handler) {
        return forEachParentContainer(containerhandlertruenew HashSet());
    }

    
    public static Object forEachParentContainer(final LaContainer containerfinal S2ContainerHandler handlerfinal boolean childFirst) {
        return forEachParentContainer(containerhandlerchildFirstnew HashSet());
    }

    
親の org.lastaflute.di.core.LaContainerをトラバースします。

Parameters:
container
handler
childFirst
processed
Returns:
処理した結果
    protected static Object forEachParentContainer(final LaContainer containerfinal S2ContainerHandler handlerfinal boolean childFirst,
            final Set processed) {
        if (childFirst) {
            final Object result = handler.processContainer(container);
            if (result != null) {
                return result;
            }
        }
        for (int i = 0; i < container.getParentSize(); ++i) {
            final LaContainer parent = container.getParent(i);
            if (processed.contains(parent)) {
                continue;
            }
            processed.add(parent);
            final Object result = forEachParentContainer(parenthandlerchildFirstprocessed);
            if (result != null) {
                return result;
            }
        }
        if (!childFirst) {
            return handler.processContainer(container);
        }
        return null;
    }
New to GrepCode? Check out our FAQ X