Options

[SOLVED] Quick fix doesn't work

StaryVenaStaryVena Member Posts: 126 Contributor II
edited November 2018 in Help
Hello,
I'm writing my own QuickFix in MetaDataError class. The code looks like this:

public class BadColorMetaDataError extends ImageMetaDataError {

private boolean color = true;

public BadColorMetaDataError(InputPort inputPort, String message, boolean color) {
super(Severity.ERROR, inputPort, message);
this.color = color;
}

@Override
public List<? extends QuickFix> getQuickFixes() {
List<QuickFix> list = Collections.<QuickFix>emptyList();
if(color){
list.add(new OperatorInsertionQuickFix("insert_gs_to_color", new Object[0], 10, (InputPort)getPort()) {

@Override
public Operator createOperator() throws OperatorCreationException {
Operator op = OperatorService.createOperator(GrayScaleToColorOp.class);
return op;
}
});
} else {
list.add(new OperatorInsertionQuickFix("insert_color_to_gs", new Object[0], 10, (InputPort)getPort()) {

@Override
public Operator createOperator() throws OperatorCreationException {
Operator op = OperatorService.createOperator(ColorToGrayScaleOp.class);
return op;
}
});

}
return list;
}
}
My ErrorsImage.properties file defined in build.xml by

<property name="extension.errorDescription" value="/com/rapidminer/resources/i18n/ErrorsImage.properties" />
looks like this:

metadata.quickfix.insert_color_to_gs = Insert Color to Grayscale operator.
metadata.quickfix.insert_gs_to_color = Insert Grayscale to Color operator.
When I run RapidMiner, I get this error:

Exception in thread "AWT-EventQueue-0" java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:148)
at java.util.AbstractList.add(AbstractList.java:108)
at com.burgsys.image.core.ioobjects.metadata.errors.BadColorMetaDataError.getQuickFixes(BadColorMetaDataError.java:28)
at com.rapidminer.gui.flow.ErrorTable$4.getValueAt(ErrorTable.java:249)
at com.rapidminer.gui.tools.ExtendedJTableSorterModel.getValueAt(ExtendedJTableSorterModel.java:328)
at javax.swing.JTable.getValueAt(JTable.java:2716)
at javax.swing.JTable.prepareRenderer(JTable.java:5714)
at javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:2114)
at javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:2016)
at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:1812)
at javax.swing.plaf.ComponentUI.update(ComponentUI.java:161)
at javax.swing.JComponent.paintComponent(JComponent.java:778)
at javax.swing.JComponent.paint(JComponent.java:1054)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JViewport.paint(JViewport.java:731)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JSplitPane.paintChildren(JSplitPane.java:1047)
at javax.swing.JComponent.paint(JComponent.java:1063)
at com.vlsolutions.swing.docking.SplitContainer.paint(SplitContainer.java:192)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5221)
at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1512)
at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1443)
at javax.swing.RepaintManager.paint(RepaintManager.java:1236)
at javax.swing.JComponent._paintImmediately(JComponent.java:5169)
at javax.swing.JComponent.paintImmediately(JComponent.java:4980)
at javax.swing.RepaintManager$3.run(RepaintManager.java:796)
at javax.swing.RepaintManager$3.run(RepaintManager.java:784)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:784)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:757)
at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:706)
at javax.swing.RepaintManager.access$1000(RepaintManager.java:62)
at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1651)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:727)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:688)
at java.awt.EventQueue$3.run(EventQueue.java:686)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:697)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
And I really don't know where should I look for problem. Can somebody point me where to start.
Thanks for your responses.

Best,
Vaclav
Tagged:

Answers

  • Options
    SkirzynskiSkirzynski Member Posts: 164 Maven
    Hey Vaclav,

    Take a look on the JavaDoc of the emptyList-method your are using:

    Returns the empty list (immutable).
    So you get an empty list which is immutable and thus, does not support adding and removing elements. If you call the methods from the collection interface, it will throw the UnsupportedOperationException. Try ArrayList or LinkedList instead!

    Best
     Marcin
  • Options
    StaryVenaStaryVena Member Posts: 126 Contributor II
    Hello Marcin,
    thanks a lot. I should read whole API doc.

    Best,
    Vaclav
Sign In or Register to comment.