1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski package test.cppuhelper.propertysetmixin.comp; 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski import com.sun.star.beans.Ambiguous; 27*b1cdbd2cSJim Jagielski import com.sun.star.beans.Defaulted; 28*b1cdbd2cSJim Jagielski import com.sun.star.beans.Optional; 29*b1cdbd2cSJim Jagielski import com.sun.star.beans.UnknownPropertyException; 30*b1cdbd2cSJim Jagielski import com.sun.star.beans.PropertyValue; 31*b1cdbd2cSJim Jagielski import com.sun.star.beans.PropertyVetoException; 32*b1cdbd2cSJim Jagielski import com.sun.star.beans.XFastPropertySet; 33*b1cdbd2cSJim Jagielski import com.sun.star.beans.XPropertyAccess; 34*b1cdbd2cSJim Jagielski import com.sun.star.beans.XPropertyChangeListener; 35*b1cdbd2cSJim Jagielski import com.sun.star.beans.XPropertySet; 36*b1cdbd2cSJim Jagielski import com.sun.star.beans.XPropertySetInfo; 37*b1cdbd2cSJim Jagielski import com.sun.star.beans.XVetoableChangeListener; 38*b1cdbd2cSJim Jagielski import com.sun.star.comp.loader.FactoryHelper; 39*b1cdbd2cSJim Jagielski import com.sun.star.lang.WrappedTargetException; 40*b1cdbd2cSJim Jagielski import com.sun.star.lang.XComponent; 41*b1cdbd2cSJim Jagielski import com.sun.star.lang.XEventListener; 42*b1cdbd2cSJim Jagielski import com.sun.star.lang.XMultiServiceFactory; 43*b1cdbd2cSJim Jagielski import com.sun.star.lang.XSingleServiceFactory; 44*b1cdbd2cSJim Jagielski import com.sun.star.lib.uno.helper.WeakBase; 45*b1cdbd2cSJim Jagielski import com.sun.star.lib.uno.helper.PropertySetMixin; 46*b1cdbd2cSJim Jagielski import com.sun.star.registry.XRegistryKey; 47*b1cdbd2cSJim Jagielski import com.sun.star.uno.Any; 48*b1cdbd2cSJim Jagielski import com.sun.star.uno.IQueryInterface; 49*b1cdbd2cSJim Jagielski import com.sun.star.uno.Type; 50*b1cdbd2cSJim Jagielski import com.sun.star.uno.XComponentContext; 51*b1cdbd2cSJim Jagielski import test.cppuhelper.propertysetmixin.XSupplier; 52*b1cdbd2cSJim Jagielski import test.cppuhelper.propertysetmixin.XTest3; 53*b1cdbd2cSJim Jagielski 54*b1cdbd2cSJim Jagielski public final class JavaSupplier extends WeakBase implements XSupplier { JavaSupplier(XComponentContext context)55*b1cdbd2cSJim Jagielski public JavaSupplier(XComponentContext context) { 56*b1cdbd2cSJim Jagielski this.context = context; 57*b1cdbd2cSJim Jagielski } 58*b1cdbd2cSJim Jagielski getEmpty1()59*b1cdbd2cSJim Jagielski public XComponent getEmpty1() { return new Empty1(); } 60*b1cdbd2cSJim Jagielski getEmpty2()61*b1cdbd2cSJim Jagielski public XComponent getEmpty2() { return new Empty2(); } 62*b1cdbd2cSJim Jagielski getFull()63*b1cdbd2cSJim Jagielski public XTest3 getFull() { return new Full(); } 64*b1cdbd2cSJim Jagielski __getServiceFactory( String implName, XMultiServiceFactory multiFactory, XRegistryKey regKey)65*b1cdbd2cSJim Jagielski public static XSingleServiceFactory __getServiceFactory( 66*b1cdbd2cSJim Jagielski String implName, XMultiServiceFactory multiFactory, XRegistryKey regKey) 67*b1cdbd2cSJim Jagielski { 68*b1cdbd2cSJim Jagielski return implName.equals(implementationName) 69*b1cdbd2cSJim Jagielski ? FactoryHelper.getServiceFactory( 70*b1cdbd2cSJim Jagielski JavaSupplier.class, serviceName, multiFactory, regKey) 71*b1cdbd2cSJim Jagielski : null; 72*b1cdbd2cSJim Jagielski } 73*b1cdbd2cSJim Jagielski 74*b1cdbd2cSJim Jagielski private static final String implementationName 75*b1cdbd2cSJim Jagielski = JavaSupplier.class.getName(); 76*b1cdbd2cSJim Jagielski private static final String serviceName 77*b1cdbd2cSJim Jagielski = "test.cppuhelper.propertysetmixin.JavaSupplier"; 78*b1cdbd2cSJim Jagielski 79*b1cdbd2cSJim Jagielski private final class Empty1 extends WeakBase implements XComponent { Empty1()80*b1cdbd2cSJim Jagielski public Empty1() {} 81*b1cdbd2cSJim Jagielski dispose()82*b1cdbd2cSJim Jagielski public void dispose() { 83*b1cdbd2cSJim Jagielski prop.dispose(); 84*b1cdbd2cSJim Jagielski } 85*b1cdbd2cSJim Jagielski addEventListener(XEventListener listener)86*b1cdbd2cSJim Jagielski public void addEventListener(XEventListener listener) {} 87*b1cdbd2cSJim Jagielski removeEventListener(XEventListener listener)88*b1cdbd2cSJim Jagielski public void removeEventListener(XEventListener listener) {} 89*b1cdbd2cSJim Jagielski 90*b1cdbd2cSJim Jagielski private final PropertySetMixin prop = new PropertySetMixin( 91*b1cdbd2cSJim Jagielski context, this, new Type(XComponent.class), null); 92*b1cdbd2cSJim Jagielski } 93*b1cdbd2cSJim Jagielski 94*b1cdbd2cSJim Jagielski private final class Empty2 extends WeakBase 95*b1cdbd2cSJim Jagielski implements XComponent, XPropertySet, XFastPropertySet, XPropertyAccess 96*b1cdbd2cSJim Jagielski { Empty2()97*b1cdbd2cSJim Jagielski public Empty2() {} 98*b1cdbd2cSJim Jagielski dispose()99*b1cdbd2cSJim Jagielski public void dispose() { 100*b1cdbd2cSJim Jagielski prop.dispose(); 101*b1cdbd2cSJim Jagielski } 102*b1cdbd2cSJim Jagielski addEventListener(XEventListener listener)103*b1cdbd2cSJim Jagielski public void addEventListener(XEventListener listener) {} 104*b1cdbd2cSJim Jagielski removeEventListener(XEventListener listener)105*b1cdbd2cSJim Jagielski public void removeEventListener(XEventListener listener) {} 106*b1cdbd2cSJim Jagielski getPropertySetInfo()107*b1cdbd2cSJim Jagielski public com.sun.star.beans.XPropertySetInfo getPropertySetInfo() { 108*b1cdbd2cSJim Jagielski return prop.getPropertySetInfo(); 109*b1cdbd2cSJim Jagielski } 110*b1cdbd2cSJim Jagielski setPropertyValue(String propertyName, Object value)111*b1cdbd2cSJim Jagielski public void setPropertyValue(String propertyName, Object value) 112*b1cdbd2cSJim Jagielski throws UnknownPropertyException, PropertyVetoException, 113*b1cdbd2cSJim Jagielski com.sun.star.lang.IllegalArgumentException, WrappedTargetException 114*b1cdbd2cSJim Jagielski { 115*b1cdbd2cSJim Jagielski prop.setPropertyValue(propertyName, value); 116*b1cdbd2cSJim Jagielski } 117*b1cdbd2cSJim Jagielski getPropertyValue(String propertyName)118*b1cdbd2cSJim Jagielski public Object getPropertyValue(String propertyName) 119*b1cdbd2cSJim Jagielski throws UnknownPropertyException, WrappedTargetException 120*b1cdbd2cSJim Jagielski { 121*b1cdbd2cSJim Jagielski return prop.getPropertyValue(propertyName); 122*b1cdbd2cSJim Jagielski } 123*b1cdbd2cSJim Jagielski addPropertyChangeListener( String propertyName, XPropertyChangeListener listener)124*b1cdbd2cSJim Jagielski public void addPropertyChangeListener( 125*b1cdbd2cSJim Jagielski String propertyName, XPropertyChangeListener listener) 126*b1cdbd2cSJim Jagielski throws UnknownPropertyException, WrappedTargetException 127*b1cdbd2cSJim Jagielski { 128*b1cdbd2cSJim Jagielski prop.addPropertyChangeListener(propertyName, listener); 129*b1cdbd2cSJim Jagielski } 130*b1cdbd2cSJim Jagielski removePropertyChangeListener( String propertyName, XPropertyChangeListener listener)131*b1cdbd2cSJim Jagielski public void removePropertyChangeListener( 132*b1cdbd2cSJim Jagielski String propertyName, XPropertyChangeListener listener) 133*b1cdbd2cSJim Jagielski throws UnknownPropertyException, WrappedTargetException 134*b1cdbd2cSJim Jagielski { 135*b1cdbd2cSJim Jagielski prop.removePropertyChangeListener(propertyName, listener); 136*b1cdbd2cSJim Jagielski } 137*b1cdbd2cSJim Jagielski addVetoableChangeListener( String propertyName, XVetoableChangeListener listener)138*b1cdbd2cSJim Jagielski public void addVetoableChangeListener( 139*b1cdbd2cSJim Jagielski String propertyName, XVetoableChangeListener listener) 140*b1cdbd2cSJim Jagielski throws UnknownPropertyException, WrappedTargetException 141*b1cdbd2cSJim Jagielski { 142*b1cdbd2cSJim Jagielski prop.addVetoableChangeListener(propertyName, listener); 143*b1cdbd2cSJim Jagielski } 144*b1cdbd2cSJim Jagielski removeVetoableChangeListener( String propertyName, XVetoableChangeListener listener)145*b1cdbd2cSJim Jagielski public void removeVetoableChangeListener( 146*b1cdbd2cSJim Jagielski String propertyName, XVetoableChangeListener listener) 147*b1cdbd2cSJim Jagielski throws UnknownPropertyException, WrappedTargetException 148*b1cdbd2cSJim Jagielski { 149*b1cdbd2cSJim Jagielski prop.removeVetoableChangeListener(propertyName, listener); 150*b1cdbd2cSJim Jagielski } 151*b1cdbd2cSJim Jagielski setFastPropertyValue(int handle, Object value)152*b1cdbd2cSJim Jagielski public void setFastPropertyValue(int handle, Object value) 153*b1cdbd2cSJim Jagielski throws UnknownPropertyException, PropertyVetoException, 154*b1cdbd2cSJim Jagielski com.sun.star.lang.IllegalArgumentException, WrappedTargetException 155*b1cdbd2cSJim Jagielski { 156*b1cdbd2cSJim Jagielski prop.setFastPropertyValue(handle, value); 157*b1cdbd2cSJim Jagielski } 158*b1cdbd2cSJim Jagielski getFastPropertyValue(int handle)159*b1cdbd2cSJim Jagielski public Object getFastPropertyValue(int handle) 160*b1cdbd2cSJim Jagielski throws UnknownPropertyException, WrappedTargetException 161*b1cdbd2cSJim Jagielski { 162*b1cdbd2cSJim Jagielski return prop.getFastPropertyValue(handle); 163*b1cdbd2cSJim Jagielski } 164*b1cdbd2cSJim Jagielski getPropertyValues()165*b1cdbd2cSJim Jagielski public PropertyValue[] getPropertyValues() { 166*b1cdbd2cSJim Jagielski return prop.getPropertyValues(); 167*b1cdbd2cSJim Jagielski } 168*b1cdbd2cSJim Jagielski setPropertyValues(PropertyValue[] props)169*b1cdbd2cSJim Jagielski public void setPropertyValues(PropertyValue[] props) 170*b1cdbd2cSJim Jagielski throws UnknownPropertyException, PropertyVetoException, 171*b1cdbd2cSJim Jagielski com.sun.star.lang.IllegalArgumentException, WrappedTargetException 172*b1cdbd2cSJim Jagielski { 173*b1cdbd2cSJim Jagielski prop.setPropertyValues(props); 174*b1cdbd2cSJim Jagielski } 175*b1cdbd2cSJim Jagielski 176*b1cdbd2cSJim Jagielski private final PropertySetMixin prop = new PropertySetMixin( 177*b1cdbd2cSJim Jagielski context, this, new Type(XComponent.class), null); 178*b1cdbd2cSJim Jagielski } 179*b1cdbd2cSJim Jagielski 180*b1cdbd2cSJim Jagielski private final class Full extends WeakBase 181*b1cdbd2cSJim Jagielski implements XTest3, XPropertySet, XFastPropertySet, XPropertyAccess 182*b1cdbd2cSJim Jagielski { Full()183*b1cdbd2cSJim Jagielski public Full() {} 184*b1cdbd2cSJim Jagielski getFirst()185*b1cdbd2cSJim Jagielski public synchronized int getFirst() { 186*b1cdbd2cSJim Jagielski return a1; 187*b1cdbd2cSJim Jagielski } 188*b1cdbd2cSJim Jagielski setFirst(int value)189*b1cdbd2cSJim Jagielski public void setFirst(int value) { 190*b1cdbd2cSJim Jagielski prop.prepareSet("First", null); 191*b1cdbd2cSJim Jagielski synchronized (this) { 192*b1cdbd2cSJim Jagielski a1 = value; 193*b1cdbd2cSJim Jagielski } 194*b1cdbd2cSJim Jagielski } 195*b1cdbd2cSJim Jagielski getSecond()196*b1cdbd2cSJim Jagielski public synchronized Ambiguous getSecond() 197*b1cdbd2cSJim Jagielski throws UnknownPropertyException 198*b1cdbd2cSJim Jagielski { 199*b1cdbd2cSJim Jagielski return a2; 200*b1cdbd2cSJim Jagielski } 201*b1cdbd2cSJim Jagielski setSecond(Ambiguous value)202*b1cdbd2cSJim Jagielski public void setSecond(Ambiguous value) 203*b1cdbd2cSJim Jagielski throws PropertyVetoException, UnknownPropertyException 204*b1cdbd2cSJim Jagielski { 205*b1cdbd2cSJim Jagielski PropertySetMixin.BoundListeners l 206*b1cdbd2cSJim Jagielski = new PropertySetMixin.BoundListeners(); 207*b1cdbd2cSJim Jagielski prop.prepareSet( 208*b1cdbd2cSJim Jagielski "Second", Any.VOID, 209*b1cdbd2cSJim Jagielski (((Optional) ((Defaulted) value.Value).Value).IsPresent 210*b1cdbd2cSJim Jagielski ? ((Optional) ((Defaulted) value.Value).Value).Value 211*b1cdbd2cSJim Jagielski : Any.VOID), 212*b1cdbd2cSJim Jagielski l); 213*b1cdbd2cSJim Jagielski synchronized (this) { 214*b1cdbd2cSJim Jagielski a2 = value; 215*b1cdbd2cSJim Jagielski } 216*b1cdbd2cSJim Jagielski l.notifyListeners(); 217*b1cdbd2cSJim Jagielski } 218*b1cdbd2cSJim Jagielski getThird()219*b1cdbd2cSJim Jagielski public int getThird() throws UnknownPropertyException { 220*b1cdbd2cSJim Jagielski throw new UnknownPropertyException("Third", this); 221*b1cdbd2cSJim Jagielski } 222*b1cdbd2cSJim Jagielski setThird(int value)223*b1cdbd2cSJim Jagielski public void setThird(int value) throws UnknownPropertyException { 224*b1cdbd2cSJim Jagielski throw new UnknownPropertyException("Third", this); 225*b1cdbd2cSJim Jagielski } 226*b1cdbd2cSJim Jagielski getFourth()227*b1cdbd2cSJim Jagielski public int getFourth() throws UnknownPropertyException { 228*b1cdbd2cSJim Jagielski throw new UnknownPropertyException("Fourth", this); 229*b1cdbd2cSJim Jagielski } 230*b1cdbd2cSJim Jagielski setFourth(int value)231*b1cdbd2cSJim Jagielski public void setFourth(int value) throws UnknownPropertyException { 232*b1cdbd2cSJim Jagielski throw new UnknownPropertyException("Fourth", this); 233*b1cdbd2cSJim Jagielski } 234*b1cdbd2cSJim Jagielski getPropertySetInfo()235*b1cdbd2cSJim Jagielski public com.sun.star.beans.XPropertySetInfo getPropertySetInfo() { 236*b1cdbd2cSJim Jagielski return prop.getPropertySetInfo(); 237*b1cdbd2cSJim Jagielski } 238*b1cdbd2cSJim Jagielski setPropertyValue(String propertyName, Object value)239*b1cdbd2cSJim Jagielski public void setPropertyValue(String propertyName, Object value) 240*b1cdbd2cSJim Jagielski throws UnknownPropertyException, PropertyVetoException, 241*b1cdbd2cSJim Jagielski com.sun.star.lang.IllegalArgumentException, WrappedTargetException 242*b1cdbd2cSJim Jagielski { 243*b1cdbd2cSJim Jagielski prop.setPropertyValue(propertyName, value); 244*b1cdbd2cSJim Jagielski } 245*b1cdbd2cSJim Jagielski getPropertyValue(String propertyName)246*b1cdbd2cSJim Jagielski public Object getPropertyValue(String propertyName) 247*b1cdbd2cSJim Jagielski throws UnknownPropertyException, WrappedTargetException 248*b1cdbd2cSJim Jagielski { 249*b1cdbd2cSJim Jagielski return prop.getPropertyValue(propertyName); 250*b1cdbd2cSJim Jagielski } 251*b1cdbd2cSJim Jagielski addPropertyChangeListener( String propertyName, XPropertyChangeListener listener)252*b1cdbd2cSJim Jagielski public void addPropertyChangeListener( 253*b1cdbd2cSJim Jagielski String propertyName, XPropertyChangeListener listener) 254*b1cdbd2cSJim Jagielski throws UnknownPropertyException, WrappedTargetException 255*b1cdbd2cSJim Jagielski { 256*b1cdbd2cSJim Jagielski prop.addPropertyChangeListener(propertyName, listener); 257*b1cdbd2cSJim Jagielski } 258*b1cdbd2cSJim Jagielski removePropertyChangeListener( String propertyName, XPropertyChangeListener listener)259*b1cdbd2cSJim Jagielski public void removePropertyChangeListener( 260*b1cdbd2cSJim Jagielski String propertyName, XPropertyChangeListener listener) 261*b1cdbd2cSJim Jagielski throws UnknownPropertyException, WrappedTargetException 262*b1cdbd2cSJim Jagielski { 263*b1cdbd2cSJim Jagielski prop.removePropertyChangeListener(propertyName, listener); 264*b1cdbd2cSJim Jagielski } 265*b1cdbd2cSJim Jagielski addVetoableChangeListener( String propertyName, XVetoableChangeListener listener)266*b1cdbd2cSJim Jagielski public void addVetoableChangeListener( 267*b1cdbd2cSJim Jagielski String propertyName, XVetoableChangeListener listener) 268*b1cdbd2cSJim Jagielski throws UnknownPropertyException, WrappedTargetException 269*b1cdbd2cSJim Jagielski { 270*b1cdbd2cSJim Jagielski prop.addVetoableChangeListener(propertyName, listener); 271*b1cdbd2cSJim Jagielski } 272*b1cdbd2cSJim Jagielski removeVetoableChangeListener( String propertyName, XVetoableChangeListener listener)273*b1cdbd2cSJim Jagielski public void removeVetoableChangeListener( 274*b1cdbd2cSJim Jagielski String propertyName, XVetoableChangeListener listener) 275*b1cdbd2cSJim Jagielski throws UnknownPropertyException, WrappedTargetException 276*b1cdbd2cSJim Jagielski { 277*b1cdbd2cSJim Jagielski prop.removeVetoableChangeListener(propertyName, listener); 278*b1cdbd2cSJim Jagielski } 279*b1cdbd2cSJim Jagielski setFastPropertyValue(int handle, Object value)280*b1cdbd2cSJim Jagielski public void setFastPropertyValue(int handle, Object value) 281*b1cdbd2cSJim Jagielski throws UnknownPropertyException, PropertyVetoException, 282*b1cdbd2cSJim Jagielski com.sun.star.lang.IllegalArgumentException, WrappedTargetException 283*b1cdbd2cSJim Jagielski { 284*b1cdbd2cSJim Jagielski prop.setFastPropertyValue(handle, value); 285*b1cdbd2cSJim Jagielski } 286*b1cdbd2cSJim Jagielski getFastPropertyValue(int handle)287*b1cdbd2cSJim Jagielski public Object getFastPropertyValue(int handle) 288*b1cdbd2cSJim Jagielski throws UnknownPropertyException, WrappedTargetException 289*b1cdbd2cSJim Jagielski { 290*b1cdbd2cSJim Jagielski return prop.getFastPropertyValue(handle); 291*b1cdbd2cSJim Jagielski } 292*b1cdbd2cSJim Jagielski getPropertyValues()293*b1cdbd2cSJim Jagielski public PropertyValue[] getPropertyValues() { 294*b1cdbd2cSJim Jagielski return prop.getPropertyValues(); 295*b1cdbd2cSJim Jagielski } 296*b1cdbd2cSJim Jagielski setPropertyValues(PropertyValue[] props)297*b1cdbd2cSJim Jagielski public void setPropertyValues(PropertyValue[] props) 298*b1cdbd2cSJim Jagielski throws UnknownPropertyException, PropertyVetoException, 299*b1cdbd2cSJim Jagielski com.sun.star.lang.IllegalArgumentException, WrappedTargetException 300*b1cdbd2cSJim Jagielski { 301*b1cdbd2cSJim Jagielski prop.setPropertyValues(props); 302*b1cdbd2cSJim Jagielski } 303*b1cdbd2cSJim Jagielski 304*b1cdbd2cSJim Jagielski private final PropertySetMixin prop = new PropertySetMixin( 305*b1cdbd2cSJim Jagielski context, this, new Type(XTest3.class), new String[] { "Third" }); 306*b1cdbd2cSJim Jagielski 307*b1cdbd2cSJim Jagielski private int a1 = 0; 308*b1cdbd2cSJim Jagielski private Ambiguous a2 = new Ambiguous( 309*b1cdbd2cSJim Jagielski new Defaulted(new Optional(), true), false); 310*b1cdbd2cSJim Jagielski } 311*b1cdbd2cSJim Jagielski 312*b1cdbd2cSJim Jagielski private final XComponentContext context; 313*b1cdbd2cSJim Jagielski } 314