Program: 60969
Project: 60969
Buggy source:
public ResourceModalPage(final PageReference callPageRef,final ModalWindow window,final ResourceTO resourceTO,final boolean createFlag){
  super();
  uSchemaAttrNames=schemaRestClient.getSchemaNames("String_Node_Str");
  uDerSchemaAttrNames=schemaRestClient.getDerivedSchemaNames("String_Node_Str");
  uVirSchemaAttrNames=schemaRestClient.getVirtualSchemaNames("String_Node_Str");
  final IModel<List<ConnInstanceTO>> connectors=new LoadableDetachableModel<List<ConnInstanceTO>>(){
    private static final long serialVersionUID=5275935387613157437L;
    @Override protected List<ConnInstanceTO> load(){
      return connectorRestClient.getAllConnectors();
    }
  }
;
  final IModel<List<SourceMappingType>> sourceMappingTypes=new LoadableDetachableModel<List<SourceMappingType>>(){
    private static final long serialVersionUID=5275935387613157437L;
    @Override protected List<SourceMappingType> load(){
      return Arrays.asList(SourceMappingType.values());
    }
  }
;
  final IModel<List<ConnConfProperty>> connectorPropertiesModel=new LoadableDetachableModel<List<ConnConfProperty>>(){
    private static final long serialVersionUID=5275935387613157437L;
    @Override protected List<ConnConfProperty> load(){
      Set<ConnConfProperty> props=resourceTO.getConnectorConfigurationProperties();
      if (props == null || props.isEmpty() || createFlag) {
        props=overridableConnectorProperties;
      }
      return new ArrayList<ConnConfProperty>(props);
    }
  }
;
  updateResourceSchemaNames(resourceTO);
  updateConnectorProperties(resourceTO.getConnectorId());
  final ConnInstanceTO connectorTO=new ConnInstanceTO();
  if (!createFlag) {
    connectorTO.setId(resourceTO.getConnectorId());
  }
  final Form form=new Form("String_Node_Str");
  form.setModel(new CompoundPropertyModel(resourceTO));
  final AjaxTextFieldPanel resourceName=new AjaxTextFieldPanel("String_Node_Str",getString("String_Node_Str"),new PropertyModel<String>(resourceTO,"String_Node_Str"),false);
  resourceName.setEnabled(createFlag);
  resourceName.addRequiredLabel();
  form.add(resourceName);
  final AjaxTextFieldPanel accountLink=new AjaxTextFieldPanel("String_Node_Str",getString("String_Node_Str"),new PropertyModel<String>(resourceTO,"String_Node_Str"),false);
  form.add(accountLink);
  final AjaxCheckBoxPanel forceMandatoryConstraint=new AjaxCheckBoxPanel("String_Node_Str",getString("String_Node_Str"),new PropertyModel<Boolean>(resourceTO,"String_Node_Str"),false);
  form.add(forceMandatoryConstraint);
  final AjaxDropDownChoicePanel<PropagationMode> optionalPropagationMode=new AjaxDropDownChoicePanel<PropagationMode>("String_Node_Str",getString("String_Node_Str"),new PropertyModel(resourceTO,"String_Node_Str"),false);
  optionalPropagationMode.setChoices(Arrays.asList(PropagationMode.values()));
  form.add(optionalPropagationMode);
  final AjaxDropDownChoicePanel<TraceLevel> createTraceLevel=new AjaxDropDownChoicePanel<TraceLevel>("String_Node_Str",getString("String_Node_Str"),new PropertyModel(resourceTO,"String_Node_Str"),false);
  createTraceLevel.setChoices(Arrays.asList(TraceLevel.values()));
  form.add(createTraceLevel);
  final AjaxDropDownChoicePanel<TraceLevel> updateTraceLevel=new AjaxDropDownChoicePanel<TraceLevel>("String_Node_Str",getString("String_Node_Str"),new PropertyModel(resourceTO,"String_Node_Str"),false);
  updateTraceLevel.setChoices(Arrays.asList(TraceLevel.values()));
  form.add(updateTraceLevel);
  final AjaxDropDownChoicePanel<TraceLevel> deleteTraceLevel=new AjaxDropDownChoicePanel<TraceLevel>("String_Node_Str",getString("String_Node_Str"),new PropertyModel(resourceTO,"String_Node_Str"),false);
  deleteTraceLevel.setChoices(Arrays.asList(TraceLevel.values()));
  form.add(deleteTraceLevel);
  mappingContainer=new WebMarkupContainer("String_Node_Str");
  mappingContainer.setOutputMarkupId(true);
  form.add(mappingContainer);
  connectorPropertiesContainer=new WebMarkupContainer("String_Node_Str");
  connectorPropertiesContainer.setOutputMarkupId(true);
  form.add(connectorPropertiesContainer);
  final AjaxDropDownChoicePanel<ConnInstanceTO> connector=new AjaxDropDownChoicePanel<ConnInstanceTO>("String_Node_Str",getString("String_Node_Str"),new Model<ConnInstanceTO>(connectorTO),false);
  connector.setChoices(connectors.getObject());
  connector.setChoiceRenderer(new ChoiceRenderer("String_Node_Str","String_Node_Str"));
  connector.getField().setModel(new IModel<ConnInstanceTO>(){
    private static final long serialVersionUID=-4202872830392400310L;
    @Override public ConnInstanceTO getObject(){
      return connectorTO;
    }
    @Override public void setObject(    final ConnInstanceTO connector){
      resourceTO.setConnectorId(connector.getId());
    }
    @Override public void detach(){
    }
  }
);
  connector.addRequiredLabel();
  connector.setEnabled(createFlag);
  form.add(connector);
  final ListView<SchemaMappingTO> mappings=new ListView<SchemaMappingTO>("String_Node_Str",resourceTO.getMappings()){
    private static final long serialVersionUID=4949588177564901031L;
    @Override protected void populateItem(    final ListItem<SchemaMappingTO> item){
      final SchemaMappingTO mappingTO=item.getModelObject();
      item.add(new AjaxDecoratedCheckbox("String_Node_Str",new Model(Boolean.FALSE)){
        private static final long serialVersionUID=7170946748485726506L;
        @Override protected void onUpdate(        final AjaxRequestTarget target){
          int index=-1;
          for (int i=0; i < resourceTO.getMappings().size() && index == -1; i++) {
            if (mappingTO.equals(resourceTO.getMappings().get(i))) {
              index=i;
            }
          }
          if (index != -1) {
            resourceTO.getMappings().remove(index);
            item.getParent().removeAll();
            target.add(mappingContainer);
          }
        }
        @Override protected IAjaxCallDecorator getAjaxCallDecorator(){
          return new AjaxPreprocessingCallDecorator(super.getAjaxCallDecorator()){
            private static final long serialVersionUID=-7927968187160354605L;
            @Override public CharSequence preDecorateScript(            final CharSequence script){
              return "String_Node_Str" + getString("String_Node_Str") + "String_Node_Str"+ "String_Node_Str"+ script+ "String_Node_Str"+ "String_Node_Str";
            }
          }
;
        }
      }
);
      final AjaxDropDownChoicePanel sourceAttrNames=new AjaxDropDownChoicePanel<String>("String_Node_Str",getString("String_Node_Str"),new PropertyModel(mappingTO,"String_Node_Str"),true);
      sourceAttrNames.setChoices(resourceSchemaNames);
      sourceAttrNames.setRequired(true);
      sourceAttrNames.setStyleShet("String_Node_Str");
      if (mappingTO.getSourceMappingType() == null) {
        sourceAttrNames.setChoices(Collections.EMPTY_LIST);
      }
 else {
switch (mappingTO.getSourceMappingType()) {
case UserSchema:
          sourceAttrNames.setChoices(uSchemaAttrNames);
        break;
case UserDerivedSchema:
      sourceAttrNames.setChoices(uDerSchemaAttrNames);
    break;
case UserVirtualSchema:
  sourceAttrNames.setChoices(uVirSchemaAttrNames);
break;
case SyncopeUserId:
sourceAttrNames.setEnabled(false);
sourceAttrNames.setRequired(false);
sourceAttrNames.setChoices(Collections.EMPTY_LIST);
mappingTO.setSourceAttrName("String_Node_Str");
break;
case Password:
sourceAttrNames.setEnabled(false);
sourceAttrNames.setRequired(false);
sourceAttrNames.setChoices(Collections.EMPTY_LIST);
mappingTO.setSourceAttrName("String_Node_Str");
break;
default :
sourceAttrNames.setChoices(Collections.EMPTY_LIST);
}
}
item.add(sourceAttrNames);
final SourceMappingTypesDropDownChoice mappingTypesPanel=new SourceMappingTypesDropDownChoice("String_Node_Str",getString("String_Node_Str"),new PropertyModel<SourceMappingType>(mappingTO,"String_Node_Str"),sourceAttrNames);
mappingTypesPanel.setRequired(true);
mappingTypesPanel.setChoices(sourceMappingTypes.getObject());
mappingTypesPanel.setStyleShet("String_Node_Str");
item.add(mappingTypesPanel);
final FieldPanel destAttrName;
if (resourceSchemaNames.isEmpty()) {
destAttrName=new AjaxTextFieldPanel("String_Node_Str",getString("String_Node_Str"),new PropertyModel<String>(mappingTO,"String_Node_Str"),true);
}
 else {
destAttrName=new AjaxDropDownChoicePanel<String>("String_Node_Str",getString("String_Node_Str"),new PropertyModel(mappingTO,"String_Node_Str"),true);
((AjaxDropDownChoicePanel)destAttrName).setChoices(resourceSchemaNames);
}
boolean required=mappingTO != null && !mappingTO.isAccountid() && !mappingTO.isPassword();
destAttrName.setRequired(required);
destAttrName.setEnabled(required);
destAttrName.setStyleShet("String_Node_Str");
item.add(destAttrName);
final AjaxTextFieldPanel mandatoryCondition=new AjaxTextFieldPanel("String_Node_Str",getString("String_Node_Str"),new PropertyModel(mappingTO,"String_Node_Str"),true);
mandatoryCondition.setChoices(Arrays.asList(new String[]{"String_Node_Str","String_Node_Str"}));
mandatoryCondition.setStyleShet("String_Node_Str");
item.add(mandatoryCondition);
final AjaxCheckBoxPanel accountId=new AjaxCheckBoxPanel("String_Node_Str",getString("String_Node_Str"),new PropertyModel(mappingTO,"String_Node_Str"),false);
accountId.getField().add(new AjaxFormComponentUpdatingBehavior("String_Node_Str"){
private static final long serialVersionUID=-1107858522700306810L;
@Override protected void onUpdate(AjaxRequestTarget target){
destAttrName.setEnabled(!accountId.getModelObject() && !mappingTO.isPassword());
destAttrName.setModelObject(null);
destAttrName.setRequired(!accountId.getModelObject());
target.add(destAttrName);
}
}
);
item.add(accountId);
final AjaxCheckBoxPanel password=new AjaxCheckBoxPanel("String_Node_Str",getString("String_Node_Str"),new PropertyModel(mappingTO,"String_Node_Str"),true);
password.getField().add(new AjaxFormComponentUpdatingBehavior("String_Node_Str"){
private static final long serialVersionUID=-1107858522700306810L;
@Override protected void onUpdate(AjaxRequestTarget target){
destAttrName.setEnabled(!mappingTO.isAccountid() && !password.getModelObject());
destAttrName.setModelObject(null);
destAttrName.setRequired(!password.getModelObject());
target.add(destAttrName);
}
}
);
item.add(password);
}
}
;
mappings.setReuseItems(true);
mappingContainer.add(mappings);
final AjaxButton addSchemaMappingBtn=new IndicatingAjaxButton("String_Node_Str",new ResourceModel("String_Node_Str")){
private static final long serialVersionUID=-4804368561204623354L;
@Override protected void onSubmit(final AjaxRequestTarget target,final Form form){
resourceTO.getMappings().add(new SchemaMappingTO());
target.add(mappingContainer);
}
@Override protected void onError(AjaxRequestTarget target,Form<?> form){
}
}
;
addSchemaMappingBtn.setDefaultFormProcessing(false);
addSchemaMappingBtn.setEnabled(!createFlag);
mappingContainer.add(addSchemaMappingBtn);
connectorPropertiesContainer.add(new ListView<ConnConfProperty>("String_Node_Str",connectorPropertiesModel){
private static final long serialVersionUID=9101744072914090143L;
@Override protected void populateItem(final ListItem<ConnConfProperty> item){
final ConnConfProperty property=item.getModelObject();
final Label label=new Label("String_Node_Str",property.getSchema().getDisplayName() == null || property.getSchema().getDisplayName().isEmpty() ? property.getSchema().getName() : property.getSchema().getDisplayName());
item.add(label);
final FieldPanel field=new AjaxTextFieldPanel("String_Node_Str",label.getDefaultModelObjectAsString(),new PropertyModel<String>(property,"String_Node_Str"),false).setRequired(property.getSchema().isRequired()).setTitle(property.getSchema().getHelpMessage());
if (property.getSchema().isRequired()) {
field.addRequiredLabel();
}
field.getField().add(new AjaxFormComponentUpdatingBehavior("String_Node_Str"){
private static final long serialVersionUID=-1107858522700306810L;
@Override protected void onUpdate(AjaxRequestTarget target){
mappings.removeAll();
addSchemaMappingBtn.setEnabled(resourceTO.getConnectorId() != null && resourceTO.getConnectorId() > 0);
updateResourceSchemaNames(resourceTO);
target.add(mappingContainer);
}
}
);
item.add(field);
resourceTO.getConnectorConfigurationProperties().add(property);
}
}
);
connector.getField().add(new AjaxFormComponentUpdatingBehavior("String_Node_Str"){
private static final long serialVersionUID=-1107858522700306810L;
@Override protected void onUpdate(AjaxRequestTarget target){
mappings.removeAll();
addSchemaMappingBtn.setEnabled(resourceTO.getConnectorId() != null && resourceTO.getConnectorId() > 0);
updateResourceSchemaNames(resourceTO);
updateConnectorProperties(resourceTO.getConnectorId());
target.add(mappingContainer);
target.add(connectorPropertiesContainer);
}
}
);
AjaxButton submit=new IndicatingAjaxButton("String_Node_Str",new ResourceModel("String_Node_Str")){
private static final long serialVersionUID=-958724007591692537L;
@Override protected void onSubmit(final AjaxRequestTarget target,final Form form){
ResourceTO resourceTO=(ResourceTO)form.getDefaultModelObject();
int accountIdCount=0;
for (SchemaMappingTO mapping : resourceTO.getMappings()) {
if (mapping.isAccountid()) {
accountIdCount++;
}
}
if (accountIdCount == 0 || accountIdCount > 1) {
error(getString("String_Node_Str"));
((Resources)callPageRef.getPage()).setOperationResult(false);
}
 else {
try {
if (createFlag) {
restClient.create(resourceTO);
}
 else {
restClient.update(resourceTO);
}
((Resources)callPageRef.getPage()).setOperationResult(true);
window.close(target);
}
 catch (SyncopeClientCompositeErrorException e) {
error(getString("String_Node_Str") + "String_Node_Str" + e.getMessage());
((Resources)callPageRef.getPage()).setOperationResult(false);
LOG.error("String_Node_Str",resourceTO);
}
}
}
@Override protected void onError(final AjaxRequestTarget target,final Form form){
target.add(feedbackPanel);
}
}
;
form.add(submit);
add(form);
MetaDataRoleAuthorizationStrategy.authorize(submit,ENABLE,xmlRolesReader.getAllAllowedRoles("String_Node_Str",createFlag ? "String_Node_Str" : "String_Node_Str"));
}

Fixed version (ground truth):
public ResourceModalPage(final PageReference callPageRef,final ModalWindow window,final ResourceTO resourceTO,final boolean createFlag){
  super();
  uSchemaAttrNames=schemaRestClient.getSchemaNames("String_Node_Str");
  uDerSchemaAttrNames=schemaRestClient.getDerivedSchemaNames("String_Node_Str");
  uVirSchemaAttrNames=schemaRestClient.getVirtualSchemaNames("String_Node_Str");
  final IModel<List<ConnInstanceTO>> connectors=new LoadableDetachableModel<List<ConnInstanceTO>>(){
    private static final long serialVersionUID=5275935387613157437L;
    @Override protected List<ConnInstanceTO> load(){
      return connectorRestClient.getAllConnectors();
    }
  }
;
  final IModel<List<SourceMappingType>> sourceMappingTypes=new LoadableDetachableModel<List<SourceMappingType>>(){
    private static final long serialVersionUID=5275935387613157437L;
    @Override protected List<SourceMappingType> load(){
      return Arrays.asList(SourceMappingType.values());
    }
  }
;
  final IModel<List<ConnConfProperty>> connectorPropertiesModel=new LoadableDetachableModel<List<ConnConfProperty>>(){
    private static final long serialVersionUID=5275935387613157437L;
    @Override protected List<ConnConfProperty> load(){
      Set<ConnConfProperty> props=resourceTO.getConnectorConfigurationProperties();
      if (props == null || props.isEmpty() || createFlag) {
        props=overridableConnectorProperties;
      }
      return new ArrayList<ConnConfProperty>(props);
    }
  }
;
  updateResourceSchemaNames(resourceTO);
  updateConnectorProperties(resourceTO.getConnectorId());
  final ConnInstanceTO connectorTO=new ConnInstanceTO();
  if (!createFlag) {
    connectorTO.setId(resourceTO.getConnectorId());
  }
  final Form form=new Form("String_Node_Str");
  form.setModel(new CompoundPropertyModel(resourceTO));
  final AjaxTextFieldPanel resourceName=new AjaxTextFieldPanel("String_Node_Str",getString("String_Node_Str"),new PropertyModel<String>(resourceTO,"String_Node_Str"),false);
  resourceName.setEnabled(createFlag);
  resourceName.addRequiredLabel();
  form.add(resourceName);
  final AjaxTextFieldPanel accountLink=new AjaxTextFieldPanel("String_Node_Str",getString("String_Node_Str"),new PropertyModel<String>(resourceTO,"String_Node_Str"),false);
  form.add(accountLink);
  final AjaxCheckBoxPanel forceMandatoryConstraint=new AjaxCheckBoxPanel("String_Node_Str",getString("String_Node_Str"),new PropertyModel<Boolean>(resourceTO,"String_Node_Str"),false);
  form.add(forceMandatoryConstraint);
  final AjaxDropDownChoicePanel<PropagationMode> optionalPropagationMode=new AjaxDropDownChoicePanel<PropagationMode>("String_Node_Str",getString("String_Node_Str"),new PropertyModel(resourceTO,"String_Node_Str"),false);
  optionalPropagationMode.setChoices(Arrays.asList(PropagationMode.values()));
  form.add(optionalPropagationMode);
  final AjaxDropDownChoicePanel<TraceLevel> createTraceLevel=new AjaxDropDownChoicePanel<TraceLevel>("String_Node_Str",getString("String_Node_Str"),new PropertyModel(resourceTO,"String_Node_Str"),false);
  createTraceLevel.setChoices(Arrays.asList(TraceLevel.values()));
  form.add(createTraceLevel);
  final AjaxDropDownChoicePanel<TraceLevel> updateTraceLevel=new AjaxDropDownChoicePanel<TraceLevel>("String_Node_Str",getString("String_Node_Str"),new PropertyModel(resourceTO,"String_Node_Str"),false);
  updateTraceLevel.setChoices(Arrays.asList(TraceLevel.values()));
  form.add(updateTraceLevel);
  final AjaxDropDownChoicePanel<TraceLevel> deleteTraceLevel=new AjaxDropDownChoicePanel<TraceLevel>("String_Node_Str",getString("String_Node_Str"),new PropertyModel(resourceTO,"String_Node_Str"),false);
  deleteTraceLevel.setChoices(Arrays.asList(TraceLevel.values()));
  form.add(deleteTraceLevel);
  mappingContainer=new WebMarkupContainer("String_Node_Str");
  mappingContainer.setOutputMarkupId(true);
  form.add(mappingContainer);
  connectorPropertiesContainer=new WebMarkupContainer("String_Node_Str");
  connectorPropertiesContainer.setOutputMarkupId(true);
  form.add(connectorPropertiesContainer);
  final AjaxDropDownChoicePanel<ConnInstanceTO> connector=new AjaxDropDownChoicePanel<ConnInstanceTO>("String_Node_Str",getString("String_Node_Str"),new Model<ConnInstanceTO>(connectorTO),false);
  connector.setChoices(connectors.getObject());
  connector.setChoiceRenderer(new ChoiceRenderer("String_Node_Str","String_Node_Str"));
  connector.getField().setModel(new IModel<ConnInstanceTO>(){
    private static final long serialVersionUID=-4202872830392400310L;
    @Override public ConnInstanceTO getObject(){
      return connectorTO;
    }
    @Override public void setObject(    final ConnInstanceTO connector){
      resourceTO.setConnectorId(connector.getId());
    }
    @Override public void detach(){
    }
  }
);
  connector.addRequiredLabel();
  connector.setEnabled(createFlag);
  form.add(connector);
  final ListView<SchemaMappingTO> mappings=new ListView<SchemaMappingTO>("String_Node_Str",resourceTO.getMappings()){
    private static final long serialVersionUID=4949588177564901031L;
    @Override protected void populateItem(    final ListItem<SchemaMappingTO> item){
      final SchemaMappingTO mappingTO=item.getModelObject();
      item.add(new AjaxDecoratedCheckbox("String_Node_Str",new Model(Boolean.FALSE)){
        private static final long serialVersionUID=7170946748485726506L;
        @Override protected void onUpdate(        final AjaxRequestTarget target){
          int index=-1;
          for (int i=0; i < resourceTO.getMappings().size() && index == -1; i++) {
            if (mappingTO.equals(resourceTO.getMappings().get(i))) {
              index=i;
            }
          }
          if (index != -1) {
            resourceTO.getMappings().remove(index);
            item.getParent().removeAll();
            target.add(mappingContainer);
          }
        }
        @Override protected IAjaxCallDecorator getAjaxCallDecorator(){
          return new AjaxPreprocessingCallDecorator(super.getAjaxCallDecorator()){
            private static final long serialVersionUID=-7927968187160354605L;
            @Override public CharSequence preDecorateScript(            final CharSequence script){
              return "String_Node_Str" + getString("String_Node_Str") + "String_Node_Str"+ "String_Node_Str"+ script+ "String_Node_Str"+ "String_Node_Str";
            }
          }
;
        }
      }
);
      final AjaxDropDownChoicePanel sourceAttrNames=new AjaxDropDownChoicePanel<String>("String_Node_Str",getString("String_Node_Str"),new PropertyModel(mappingTO,"String_Node_Str"),true);
      sourceAttrNames.setChoices(resourceSchemaNames);
      sourceAttrNames.setRequired(true);
      sourceAttrNames.setStyleShet("String_Node_Str");
      if (mappingTO.getSourceMappingType() == null) {
        sourceAttrNames.setChoices(Collections.EMPTY_LIST);
      }
 else {
switch (mappingTO.getSourceMappingType()) {
case UserSchema:
          sourceAttrNames.setChoices(uSchemaAttrNames);
        break;
case UserDerivedSchema:
      sourceAttrNames.setChoices(uDerSchemaAttrNames);
    break;
case UserVirtualSchema:
  sourceAttrNames.setChoices(uVirSchemaAttrNames);
break;
case SyncopeUserId:
sourceAttrNames.setEnabled(false);
sourceAttrNames.setRequired(false);
sourceAttrNames.setChoices(Collections.EMPTY_LIST);
mappingTO.setSourceAttrName("String_Node_Str");
break;
case Password:
sourceAttrNames.setEnabled(false);
sourceAttrNames.setRequired(false);
sourceAttrNames.setChoices(Collections.EMPTY_LIST);
mappingTO.setSourceAttrName("String_Node_Str");
break;
default :
sourceAttrNames.setChoices(Collections.EMPTY_LIST);
}
}
item.add(sourceAttrNames);
final SourceMappingTypesDropDownChoice mappingTypesPanel=new SourceMappingTypesDropDownChoice("String_Node_Str",getString("String_Node_Str"),new PropertyModel<SourceMappingType>(mappingTO,"String_Node_Str"),sourceAttrNames);
mappingTypesPanel.setRequired(true);
mappingTypesPanel.setChoices(sourceMappingTypes.getObject());
mappingTypesPanel.setStyleShet("String_Node_Str");
item.add(mappingTypesPanel);
final FieldPanel destAttrName;
if (resourceSchemaNames.isEmpty()) {
destAttrName=new AjaxTextFieldPanel("String_Node_Str",getString("String_Node_Str"),new PropertyModel<String>(mappingTO,"String_Node_Str"),true);
}
 else {
destAttrName=new AjaxDropDownChoicePanel<String>("String_Node_Str",getString("String_Node_Str"),new PropertyModel(mappingTO,"String_Node_Str"),true);
((AjaxDropDownChoicePanel)destAttrName).setChoices(resourceSchemaNames);
}
boolean required=mappingTO != null && !mappingTO.isAccountid() && !mappingTO.isPassword();
destAttrName.setRequired(required);
destAttrName.setEnabled(required);
destAttrName.setStyleShet("String_Node_Str");
item.add(destAttrName);
final AjaxTextFieldPanel mandatoryCondition=new AjaxTextFieldPanel("String_Node_Str",getString("String_Node_Str"),new PropertyModel(mappingTO,"String_Node_Str"),true);
mandatoryCondition.setChoices(Arrays.asList(new String[]{"String_Node_Str","String_Node_Str"}));
mandatoryCondition.setStyleShet("String_Node_Str");
item.add(mandatoryCondition);
final AjaxCheckBoxPanel accountId=new AjaxCheckBoxPanel("String_Node_Str",getString("String_Node_Str"),new PropertyModel(mappingTO,"String_Node_Str"),false);
accountId.getField().add(new AjaxFormComponentUpdatingBehavior("String_Node_Str"){
private static final long serialVersionUID=-1107858522700306810L;
@Override protected void onUpdate(AjaxRequestTarget target){
destAttrName.setEnabled(!accountId.getModelObject() && !mappingTO.isPassword());
destAttrName.setModelObject(null);
destAttrName.setRequired(!accountId.getModelObject());
target.add(destAttrName);
}
}
);
item.add(accountId);
final AjaxCheckBoxPanel password=new AjaxCheckBoxPanel("String_Node_Str",getString("String_Node_Str"),new PropertyModel(mappingTO,"String_Node_Str"),true);
password.getField().add(new AjaxFormComponentUpdatingBehavior("String_Node_Str"){
private static final long serialVersionUID=-1107858522700306810L;
@Override protected void onUpdate(AjaxRequestTarget target){
destAttrName.setEnabled(!mappingTO.isAccountid() && !password.getModelObject());
destAttrName.setModelObject(null);
destAttrName.setRequired(!password.getModelObject());
target.add(destAttrName);
}
}
);
item.add(password);
}
}
;
mappings.setReuseItems(true);
mappingContainer.add(mappings);
final AjaxButton addSchemaMappingBtn=new IndicatingAjaxButton("String_Node_Str",new ResourceModel("String_Node_Str")){
private static final long serialVersionUID=-4804368561204623354L;
@Override protected void onSubmit(final AjaxRequestTarget target,final Form form){
resourceTO.getMappings().add(new SchemaMappingTO());
target.add(mappingContainer);
}
@Override protected void onError(AjaxRequestTarget target,Form<?> form){
}
}
;
addSchemaMappingBtn.setDefaultFormProcessing(false);
addSchemaMappingBtn.setEnabled(!createFlag);
mappingContainer.add(addSchemaMappingBtn);
connectorPropertiesContainer.add(new ListView<ConnConfProperty>("String_Node_Str",connectorPropertiesModel){
private static final long serialVersionUID=9101744072914090143L;
@Override protected void populateItem(final ListItem<ConnConfProperty> item){
final ConnConfProperty property=item.getModelObject();
final Label label=new Label("String_Node_Str",property.getSchema().getDisplayName() == null || property.getSchema().getDisplayName().isEmpty() ? property.getSchema().getName() : property.getSchema().getDisplayName());
item.add(label);
final FieldPanel field;
if (GUARDED_STRING.equals(property.getSchema().getType())) {
field=new AjaxPasswordFieldPanel("String_Node_Str",label.getDefaultModelObjectAsString(),new PropertyModel<String>(property,"String_Node_Str"),true).setRequired(property.getSchema().isRequired()).setTitle(property.getSchema().getHelpMessage());
}
 else {
field=new AjaxTextFieldPanel("String_Node_Str",label.getDefaultModelObjectAsString(),new PropertyModel<String>(property,"String_Node_Str"),false).setRequired(property.getSchema().isRequired()).setTitle(property.getSchema().getHelpMessage());
if (property.getSchema().isRequired()) {
field.addRequiredLabel();
}
}
field.getField().add(new AjaxFormComponentUpdatingBehavior("String_Node_Str"){
private static final long serialVersionUID=-1107858522700306810L;
@Override protected void onUpdate(AjaxRequestTarget target){
mappings.removeAll();
addSchemaMappingBtn.setEnabled(resourceTO.getConnectorId() != null && resourceTO.getConnectorId() > 0);
updateResourceSchemaNames(resourceTO);
target.add(mappingContainer);
}
}
);
item.add(field);
resourceTO.getConnectorConfigurationProperties().add(property);
}
}
);
connector.getField().add(new AjaxFormComponentUpdatingBehavior("String_Node_Str"){
private static final long serialVersionUID=-1107858522700306810L;
@Override protected void onUpdate(AjaxRequestTarget target){
mappings.removeAll();
addSchemaMappingBtn.setEnabled(resourceTO.getConnectorId() != null && resourceTO.getConnectorId() > 0);
updateResourceSchemaNames(resourceTO);
updateConnectorProperties(resourceTO.getConnectorId());
target.add(mappingContainer);
target.add(connectorPropertiesContainer);
}
}
);
AjaxButton submit=new IndicatingAjaxButton("String_Node_Str",new ResourceModel("String_Node_Str")){
private static final long serialVersionUID=-958724007591692537L;
@Override protected void onSubmit(final AjaxRequestTarget target,final Form form){
ResourceTO resourceTO=(ResourceTO)form.getDefaultModelObject();
int accountIdCount=0;
for (SchemaMappingTO mapping : resourceTO.getMappings()) {
if (mapping.isAccountid()) {
accountIdCount++;
}
}
if (accountIdCount == 0 || accountIdCount > 1) {
error(getString("String_Node_Str"));
((Resources)callPageRef.getPage()).setOperationResult(false);
}
 else {
try {
if (createFlag) {
restClient.create(resourceTO);
}
 else {
restClient.update(resourceTO);
}
((Resources)callPageRef.getPage()).setOperationResult(true);
window.close(target);
}
 catch (SyncopeClientCompositeErrorException e) {
error(getString("String_Node_Str") + "String_Node_Str" + e.getMessage());
((Resources)callPageRef.getPage()).setOperationResult(false);
LOG.error("String_Node_Str",resourceTO);
}
}
}
@Override protected void onError(final AjaxRequestTarget target,final Form form){
target.add(feedbackPanel);
}
}
;
form.add(submit);
add(form);
MetaDataRoleAuthorizationStrategy.authorize(submit,ENABLE,xmlRolesReader.getAllAllowedRoles("String_Node_Str",createFlag ? "String_Node_Str" : "String_Node_Str"));
}