/*
 * 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 org.apache.felix.ipojo.annotations;

import java.lang.annotation.ElementType;
import java.lang.annotation.Target;

/**
 * This annotation declares a component.
 * This annotation is mandatory to declares an iPOJO component.
 * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
 */
@Target({ElementType.TYPE, ElementType.ANNOTATION_TYPE})
public @interface Component {

    /**
     * Set if the component type is public.
     * Default: true
     * @deprecated renamed to publicFactory.
     */
    boolean public_factory() default true;

    /**
     * Set if the component type is public.
     * Default: true
     */
    boolean publicFactory() default true;

    /**
     * Set the component type name.
     * Default : implementation class name.
     */
    String name() default "";

    /**
     * Enable / Disable the architecture exposition.
     * Default : false
     */
    boolean architecture() default false;

    /**
     * Set if the component is immediate.
     * Default : false
     */
    boolean immediate() default false;

    /**
     * Set if the component must propagate received configuration to provided services.
     * default: false
     */
    boolean propagation() default true;

    /**
     * Set the Managed Service PID.
     * default no PID (i.e. the managed service will not be exposed).
     */
    String managedservice() default "";

    /**
     * Set the factory-method, if the pojo has to be created
     * from a static method. The specified method must be a static
     * method and return a pojo object.
     * By default, iPOJO uses the 'regular' constructor.
     * @deprecated now is called <tt>factoryMethod</tt>.
     */
    String factory_method() default "";

    /**
     * Set the factory-method, if the pojo has to be created
     * from a static method. The specified method must be a static
     * method and return a pojo object.
     * By default, iPOJO uses the 'regular' constructor.
     */
    String factoryMethod() default "";

    /**
     * Set the version of the component type.
     */
    String version() default "";
}

/*
 * 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 org.apache.felix.ipojo.annotations;

import java.lang.annotation.ElementType;
import java.lang.annotation.Target;

/**
 * This annotation declares a component.
 * This annotation is mandatory to declares an iPOJO component.
 * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
 */
@Target({ElementType.TYPE, ElementType.ANNOTATION_TYPE})
public @interface Component {

    /**
     * Set if the component type is public.
     * Default: true
     * @deprecated renamed to publicFactory.
     */
    boolean public_factory() default true;

    /**
     * Set if the component type is public.
     * Default: true
     */
    boolean publicFactory() default true;

    /**
     * Set the component type name.
     * Default : implementation class name.
     */
    String name() default "";

    /**
     * Enable / Disable the architecture exposition.
     * Default : true
     */
    boolean architecture() default true;

    /**
     * Set if the component is immediate.
     * Default : false
     */
    boolean immediate() default false;

    /**
     * Set if the component must propagate received configuration to provided services.
     * default: true
     */
    boolean propagation() default true;

    /**
     * Set the Managed Service PID.
     * default no PID (i.e. the managed service will not be exposed).
     */
    String managedservice() default "";

    /**
     * Set the factory-method, if the pojo has to be created
     * from a static method. The specified method must be a static
     * method and return a pojo object.
     * By default, iPOJO uses the 'regular' constructor.
     * @deprecated now is called <tt>factoryMethod</tt>.
     */
    String factory_method() default "";

    /**
     * Set the factory-method, if the pojo has to be created
     * from a static method. The specified method must be a static
     * method and return a pojo object.
     * By default, iPOJO uses the 'regular' constructor.
     */
    String factoryMethod() default "";

    /**
     * Set the version of the component type.
     */
    String version() default "";
}

Fix FELIX-4292. Set the architecture default value to true.