PropertyFacade extends ItemFacade<Property, S> implements Property { @Override public Property getProperty() throws RepositoryException { Property internalProperty = delegate.getProperty(); return new PropertyFacade<>(internalProperty, session); } @SuppressWarnings("WeakerAccess")  PropertyFacade(final @NotNull Property delegate,
                          final @NotNull SessionFacade<S> session); @Override Value getValue(); @Override Value[] getValues(); @Override String getString(); @SuppressWarnings("deprecation") @Override InputStream getStream(); @Override Binary getBinary(); @Override long getLong(); @Override double getDouble(); @Override BigDecimal getDecimal(); @Override Calendar getDate(); @Override boolean getBoolean(); @Override Node getNode(); @Override Property getProperty(); @Override long getLength(); @Override long[] getLengths(); @Override PropertyDefinition getDefinition(); @Override int getType(); @Override boolean isMultiple(); @Override void setValue(Value value); @Override void setValue(Value[] values); @Override void setValue(String value); @Override void setValue(String[] values); @Override void setValue(InputStream value); @Override void setValue(Binary value); @Override void setValue(long value); @Override void setValue(double value); @Override void setValue(BigDecimal value); @Override void setValue(Calendar value); @Override void setValue(boolean value); @Override void setValue(Node value);  }
@Test public void testGetProperty() throws Exception { Property delegate = mock(Property.class); PropertyFacade<Session> facade = getFacade(delegate); final Property value = mock(Property.class); when(delegate.getProperty()).thenReturn(value); final String path = "/correct/path"; when(value.getPath()).thenReturn(path); final Property fromFacade = facade.getProperty(); assertEquals("same path", path, fromFacade.getPath()); assertTrue("is facade", fromFacade instanceof PropertyFacade); }