BorderColorCssValues extends AbstractBean<BorderColorCssValues> implements StateChangeInformer<Bean> { public void setRgbCssValue(final RgbCssValue rgbCssValue) { if (rgbCssValue == null) { throw new NullValueException("rgbCssValue can not be null"); } if (this.rgbCssValue != null) { if (rgbCssValue.isAlreadyInUse() && !Objects.equals( this.rgbCssValue.getStateChangeInformer(), rgbCssValue.getStateChangeInformer())) { try { final RgbCssValue rgbCssValueClone = CloneUtil .deepClone(rgbCssValue); this.rgbCssValue.setAlreadyInUse(false); this.rgbCssValue = rgbCssValueClone; if (LOGGER.isLoggable(Level.WARNING)) { LOGGER.warning("cloned rgbCssValue " + rgbCssValue + "(hashcode: " + rgbCssValue.hashCode() + ") as it is already used by another object"); } } catch (final CloneNotSupportedException e) { throw new InvalidValueException(e.toString()); } } else { this.rgbCssValue.setAlreadyInUse(false); this.rgbCssValue = rgbCssValue; } } else { if (rgbCssValue.isAlreadyInUse()) { try { this.rgbCssValue = CloneUtil.deepClone(rgbCssValue); if (LOGGER.isLoggable(Level.WARNING)) { LOGGER.warning("cloned rgbCssValue " + rgbCssValue + "(hashcode: " + rgbCssValue.hashCode() + ") as it is already used by another object"); } } catch (final CloneNotSupportedException e) { throw new InvalidValueException(e.toString()); } } else { this.rgbCssValue = rgbCssValue; } } cssValue = this.rgbCssValue.getValue(); this.rgbCssValue.setStateChangeInformer(this); this.rgbCssValue.setAlreadyInUse(true); makeRgbaCssValueNull(); 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 testSetRgbCssValue() { { RgbCssValue rgbCssValue = new RgbCssValue(); rgbCssValue.setR(55); rgbCssValue.setG(155); rgbCssValue.setB(75); BorderColorCssValues borderColorCssValues = new BorderColorCssValues(); borderColorCssValues.setRgbCssValue(rgbCssValue); assertEquals("rgb(55, 155, 75)", borderColorCssValues.getValue()); rgbCssValue.setR(0); rgbCssValue.setG(25); rgbCssValue.setB(255); assertEquals("rgb(0, 25, 255)", borderColorCssValues.getValue()); assertEquals(rgbCssValue, borderColorCssValues.getRgbCssValue()); assertTrue(rgbCssValue.isAlreadyInUse()); borderColorCssValues.setValue(BorderColorCssValues.TRANSPARENT); assertNull(borderColorCssValues.getRgbCssValue()); assertFalse(rgbCssValue.isAlreadyInUse()); } { BorderColorCssValues color = new BorderColorCssValues(); RgbCssValue rgbCssValue = new RgbCssValue("rgb(15, 25, 255)"); assertFalse(rgbCssValue.isAlreadyInUse()); color.setRgbCssValue(rgbCssValue); assertTrue(rgbCssValue.isAlreadyInUse()); RgbaCssValue rgbaCssValue = new RgbaCssValue("rgba(15, 25, 100, 1)"); assertFalse(rgbaCssValue.isAlreadyInUse()); color.setRgbaCssValue(rgbaCssValue); assertTrue(rgbaCssValue.isAlreadyInUse()); assertFalse(rgbCssValue.isAlreadyInUse()); assertNull(color.getRgbCssValue()); color.setAsTransparent(); assertNull(color.getRgbaCssValue()); assertNull(color.getRgbCssValue()); assertNull(color.getHslCssValue()); assertNull(color.getHslaCssValue()); HslCssValue hslCssValue = new HslCssValue("hsl(15, 25%, 100%)"); assertFalse(hslCssValue.isAlreadyInUse()); color.setHslCssValue(hslCssValue); assertTrue(hslCssValue.isAlreadyInUse()); assertNull(color.getRgbaCssValue()); assertNull(color.getRgbCssValue()); assertNotNull(color.getHslCssValue()); assertNull(color.getHslaCssValue()); HslaCssValue hslaCssValue = new HslaCssValue("hsla(15, 25%, 100%, 1)"); assertFalse(hslaCssValue.isAlreadyInUse()); color.setHslaCssValue(hslaCssValue); assertTrue(hslaCssValue.isAlreadyInUse()); assertNull(color.getRgbaCssValue()); assertNull(color.getRgbCssValue()); assertNull(color.getHslCssValue()); assertNotNull(color.getHslaCssValue()); color.setAsTransparent(); assertNull(color.getRgbaCssValue()); assertNull(color.getRgbCssValue()); assertNull(color.getHslCssValue()); assertNull(color.getHslaCssValue()); } }