package com.intellij.flex.model.bc.impl; import com.intellij.flex.model.bc.JpsFlexBCReference; import com.intellij.flex.model.bc.JpsFlexBuildConfiguration; import com.intellij.flex.model.bc.JpsFlexBuildConfigurationManager; import com.intellij.flex.model.module.JpsFlexModuleType; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jps.model.JpsCompositeElement; import org.jetbrains.jps.model.JpsElementChildRole; import org.jetbrains.jps.model.JpsElementCollection; import org.jetbrains.jps.model.ex.JpsElementChildRoleBase; import org.jetbrains.jps.model.impl.JpsNamedElementReferenceBase; import org.jetbrains.jps.model.module.JpsModule; import org.jetbrains.jps.model.module.JpsModuleReference; import org.jetbrains.jps.model.module.JpsTypedModule; class JpsFlexBCReferenceImpl extends JpsNamedElementReferenceBase<JpsFlexBuildConfiguration, JpsFlexBuildConfiguration, JpsFlexBCReferenceImpl> implements JpsFlexBCReference { static final JpsElementChildRole<JpsFlexBCReference> ROLE = JpsElementChildRoleBase.create("build configuration reference"); public JpsFlexBCReferenceImpl(@NotNull final String name, final JpsModuleReference moduleReference) { super(name, moduleReference); } private JpsFlexBCReferenceImpl(final JpsFlexBCReferenceImpl original) { super(original); } @NotNull public JpsFlexBCReferenceImpl createCopy() { return new JpsFlexBCReferenceImpl(this); } @Nullable @Override protected JpsElementCollection<? extends JpsFlexBuildConfiguration> getCollection(@NotNull JpsCompositeElement parent) { if (!(parent instanceof JpsModule)) return null; JpsTypedModule<JpsFlexBuildConfigurationManager> flexModule = ((JpsModule)parent).asTyped(JpsFlexModuleType.INSTANCE); if (flexModule == null) return null; return flexModule.getProperties().getContainer().getChild(JpsFlexBuildConfigurationImpl.COLLECTION_ROLE); } @Nullable @Override protected JpsFlexBuildConfiguration resolve(JpsFlexBuildConfiguration element) { return element; } }