BorderColorCssValues extends AbstractBean<BorderColorCssValues> implements StateChangeInformer<Bean> { public void setRgbaCssValue(final RgbaCssValue rgbaCssValue) { if (rgbaCssValue == null) { throw new NullValueException("rgbaCssValue can not be null"); } if (this.rgbaCssValue != null) { if (rgbaCssValue.isAlreadyInUse() && !Objects.equals( this.rgbaCssValue.getStateChangeInformer(), rgbaCssValue.getStateChangeInformer())) { try { final RgbaCssValue rgbaCssValueClone = CloneUtil .deepClone(rgbaCssValue); this.rgbaCssValue.setAlreadyInUse(false); this.rgbaCssValue = rgbaCssValueClone; if (LOGGER.isLoggable(Level.WARNING)) { LOGGER.warning("cloned rgbaCssValue " + rgbaCssValue + "(hashcode: " + rgbaCssValue.hashCode() + ") as it is already used by another object"); } } catch (final CloneNotSupportedException e) { throw new InvalidValueException(e.toString()); } } else { this.rgbaCssValue.setAlreadyInUse(false); this.rgbaCssValue = rgbaCssValue; } } else { if (rgbaCssValue.isAlreadyInUse()) { try { this.rgbaCssValue = CloneUtil.deepClone(rgbaCssValue); if (LOGGER.isLoggable(Level.WARNING)) { LOGGER.warning("cloned rgbaCssValue " + rgbaCssValue + "(hashcode: " + rgbaCssValue.hashCode() + ") as it is already used by another object"); } } catch (final CloneNotSupportedException e) { throw new InvalidValueException(e.toString()); } } else { this.rgbaCssValue = rgbaCssValue; } } cssValue = this.rgbaCssValue.getValue(); this.rgbaCssValue.setStateChangeInformer(this); this.rgbaCssValue.setAlreadyInUse(true); makeRgbCssValueNull(); makeHslCssValueNull(); makeHslaCssValueNull(); } BorderColorCssValues();  BorderColorCssValues(final String cssValue);  BorderColorCssValues(
            final BorderColorCssValues borderColorCssValue);  BorderColorCssValues(final RgbCssValue rgbCssValue);  BorderColorCssValues(final RgbaCssValue rgbaCssValue);  BorderColorCssValues(final HslCssValue hslCssValue);  BorderColorCssValues(final HslaCssValue hslaCssValue); void setRgbaCssValue(final RgbaCssValue rgbaCssValue); void setHslaCssValue(final HslaCssValue hslaCssValue); @Override String toString(); @Override String getValue(); BorderColorCssValues setValue(final String cssValue); void setAsTransparent(); static boolean isValid(final String cssValue); @Override void stateChanged(final Bean stateChangedObject); RgbCssValue getRgbCssValue(); RgbaCssValue getRgbaCssValue(); HslCssValue getHslCssValue(); HslaCssValue getHslaCssValue(); void setRgbCssValue(final RgbCssValue rgbCssValue); void setHslCssValue(final HslCssValue hslCssValue); static final String TRANSPARENT; }
@Test public void testSetRgbaCssValue() { RgbaCssValue rgbaCssValue = new RgbaCssValue(); rgbaCssValue.setR(55); rgbaCssValue.setG(155); rgbaCssValue.setB(75); rgbaCssValue.setA(0.5F); BorderColorCssValues borderColorCssValues = new BorderColorCssValues(); borderColorCssValues.setRgbaCssValue(rgbaCssValue); assertEquals("rgba(55, 155, 75, 0.5)", borderColorCssValues.getValue()); rgbaCssValue.setR(0); rgbaCssValue.setG(25); rgbaCssValue.setB(255); rgbaCssValue.setA(1F); assertEquals("rgba(0, 25, 255, 1.0)", borderColorCssValues.getValue()); assertEquals(rgbaCssValue, borderColorCssValues.getRgbaCssValue()); assertTrue(rgbaCssValue.isAlreadyInUse()); borderColorCssValues.setValue(BorderColorCssValues.TRANSPARENT); assertNull(borderColorCssValues.getRgbaCssValue()); assertFalse(rgbaCssValue.isAlreadyInUse()); }