Added: incubator/aries/trunk/samples/blueprint-sample-idverifier/blueprint-sample-idverifier-client/src/main/java/org/apache/aries/samples/blueprint/idverifier/client/RandomIDChoice.java URL: http://svn.apache.org/viewvc/incubator/aries/trunk/samples/blueprint-sample-idverifier/blueprint-sample-idverifier-client/src/main/java/org/apache/aries/samples/blueprint/idverifier/client/RandomIDChoice.java?rev=899972&view=auto ============================================================================== --- incubator/aries/trunk/samples/blueprint-sample-idverifier/blueprint-sample-idverifier-client/src/main/java/org/apache/aries/samples/blueprint/idverifier/client/RandomIDChoice.java (added) +++ incubator/aries/trunk/samples/blueprint-sample-idverifier/blueprint-sample-idverifier-client/src/main/java/org/apache/aries/samples/blueprint/idverifier/client/RandomIDChoice.java Sat Jan 16 15:20:44 2010 @@ -0,0 +1,49 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.aries.samples.blueprint.idverifier.client; + +import java.util.Random; + +/** + * @author forrestxm + * + */ +public class RandomIDChoice { + private static String[] idarray = { + "310115197011076874", + "310115197011277844", + "110108197710016853", + "11010819541001366X" + }; + + public RandomIDChoice(){ + super(); + } + + public String getRandomID(){ + Random randomintgenerator = new Random(); + int randomint = randomintgenerator.nextInt(1000); + int remain = randomint % idarray.length; + if (remain < 0 || remain > idarray.length - 1) { + remain = randomintgenerator.nextInt(1000) % idarray.length; + } + return idarray[remain]; + } + +}
Added: incubator/aries/trunk/samples/blueprint-sample-idverifier/blueprint-sample-idverifier-client/src/main/java/org/apache/aries/samples/blueprint/idverifier/client/VerifierServiceReferenceListener.java URL: http://svn.apache.org/viewvc/incubator/aries/trunk/samples/blueprint-sample-idverifier/blueprint-sample-idverifier-client/src/main/java/org/apache/aries/samples/blueprint/idverifier/client/VerifierServiceReferenceListener.java?rev=899972&view=auto ============================================================================== --- incubator/aries/trunk/samples/blueprint-sample-idverifier/blueprint-sample-idverifier-client/src/main/java/org/apache/aries/samples/blueprint/idverifier/client/VerifierServiceReferenceListener.java (added) +++ incubator/aries/trunk/samples/blueprint-sample-idverifier/blueprint-sample-idverifier-client/src/main/java/org/apache/aries/samples/blueprint/idverifier/client/VerifierServiceReferenceListener.java Sat Jan 16 15:20:44 2010 @@ -0,0 +1,111 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.aries.samples.blueprint.idverifier.client; + +import java.util.Map; +import java.util.Set; + + +import org.apache.aries.samples.blueprint.idverifier.api.PersonIDVerifier; +import org.apache.aries.samples.blueprint.idverifier.server.PersonIDVerifierSimpleImpl; +import org.apache.aries.samples.blueprint.idverifier.server.PersonIDVerifierComplexImpl; +import org.osgi.framework.Bundle; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceReference; + +/** + * @author forrestxm + * + */ +public class VerifierServiceReferenceListener { + public void bind(ServiceReference svcref) { + System.out.println("**********" + this.getClass().getSimpleName() + " bind method via ServiceReference!*********"); + // Get specific PersonIDVerifier implementation class + Bundle svcproviderbundle = svcref.getBundle(); + BundleContext svcproviderbundlectx = svcproviderbundle.getBundleContext(); + Object svcbean = svcproviderbundlectx.getService(svcref); + String svcbeanname = null; + if (svcbean instanceof PersonIDVerifierSimpleImpl) { + svcbeanname = ((PersonIDVerifierSimpleImpl)svcbean).getClass().getCanonicalName(); + } else if (svcbean instanceof PersonIDVerifierComplexImpl){ + svcbeanname = ((PersonIDVerifierComplexImpl)svcbean).getClass().getCanonicalName(); + } + System.out.println("Bundle " + svcproviderbundle.getSymbolicName() + " provides this service implemented by " + svcbeanname); + // Print service users information + System.out.println("**********Start of printing service's users**********"); + Bundle[] usingbundles = svcref.getUsingBundles(); + if (usingbundles != null) { + int len = usingbundles.length; + System.out.println("The service has " + len + " users!"); + System.out.println("They are:"); + for (int i = 0; i < len; i++) { + System.out.println(usingbundles[i].getSymbolicName()); + } + System.out.println("All users are printed out!"); + } + System.out.println("**********End of printing service's users**********"); + + } + + public void bind(PersonIDVerifier svc) { + System.out.println("**********This is service object proxy bind method!***********"); + } + + public void unbind(ServiceReference svcref) { + System.out.println("**********" + this.getClass().getSimpleName() + " unbind method via ServiceReference!*********"); + // Get specific PersonIDVerifier implementation class + Bundle svcproviderbundle = svcref.getBundle(); + BundleContext svcproviderbundlectx = svcproviderbundle.getBundleContext(); + Object svcbean = svcproviderbundlectx.getService(svcref); + String svcbeanname = null; + if (svcbean instanceof PersonIDVerifierSimpleImpl) { + svcbeanname = ((PersonIDVerifierSimpleImpl)svcbean).getClass().getCanonicalName(); + } else if (svcbean instanceof PersonIDVerifierComplexImpl){ + svcbeanname = ((PersonIDVerifierComplexImpl)svcbean).getClass().getCanonicalName(); + } + System.out.println("Bundle " + svcproviderbundle.getSymbolicName() + " provides this service implemented by " + svcbeanname); + // Print service users information + System.out.println("**********Start of printing service's users**********"); + Bundle[] usingbundles = svcref.getUsingBundles(); + if (usingbundles != null) { + int len = usingbundles.length; + System.out.println("The service has " + len + " users!"); + System.out.println("They are:"); + for (int i = 0; i < len; i++) { + System.out.println(usingbundles[i].getSymbolicName()); + } + System.out.println("All users are printed out!"); + } + System.out.println("**********End of printing service's users**********"); + + } + + public void unbind(PersonIDVerifier svc, Map props) { + System.out.println("**********This is service object proxy unbind method!***********"); + System.out.println("**********Start of printing service properties***********"); + System.out.println("Service properties are:"); + Set keys = props.keySet(); + for (Object obj : keys) { + Object valueobj = props.get(obj); + System.out.println(obj + "=" + valueobj); + } + System.out.println("**********End of printing service properties***********"); + } + +} Added: incubator/aries/trunk/samples/blueprint-sample-idverifier/blueprint-sample-idverifier-client/src/main/resources/OSGI-INF/blueprint/blueprint-sample-idverifier-client.xml URL: http://svn.apache.org/viewvc/incubator/aries/trunk/samples/blueprint-sample-idverifier/blueprint-sample-idverifier-client/src/main/resources/OSGI-INF/blueprint/blueprint-sample-idverifier-client.xml?rev=899972&view=auto ============================================================================== --- incubator/aries/trunk/samples/blueprint-sample-idverifier/blueprint-sample-idverifier-client/src/main/resources/OSGI-INF/blueprint/blueprint-sample-idverifier-client.xml (added) +++ incubator/aries/trunk/samples/blueprint-sample-idverifier/blueprint-sample-idverifier-client/src/main/resources/OSGI-INF/blueprint/blueprint-sample-idverifier-client.xml Sat Jan 16 15:20:44 2010 @@ -0,0 +1,137 @@ +<?xml version="1.0" encoding="UTF-8"?> + <!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version + 2.0 (the "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 Unless required by + applicable law or agreed to in writing, software distributed under the + License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + CONDITIONS OF ANY KIND, either express or implied. See the License for + the specific language governing permissions and limitations under the + License. + --> +<blueprint default-activation="eager" default-availability="optional" + default-timeout="300000" xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"> + <description>Apache Aries Blueprint Sample - ID Verifier Client</description> + <type-converters> + <bean activation="eager" + class="org.apache.aries.samples.blueprint.idverifier.client.IDConverter" + id="idconverterbean" scope="singleton"> + <description>ID Converter Bean</description> + <property name="verifier" ref="verifierservicereference" /> + </bean> + </type-converters> + + <reference id="verifierservicereference" + interface="org.apache.aries.samples.blueprint.idverifier.api.PersonIDVerifier" + availability="mandatory"> + <reference-listener bind-method="bind" unbind-method="unbind"> + <bean class="org.apache.aries.samples.blueprint.idverifier.client.VerifierServiceReferenceListener"/> + </reference-listener> + </reference> + + <bean id="personbankbean" + class="org.apache.aries.samples.blueprint.idverifier.client.PersonBankBean" + scope="singleton" activation="eager" init-method="startUp"> + <description>Personal Bank Bean</description> + + <!--<argument value="11010819541001366X" />--> + <argument index="0"> + <bean class="org.apache.aries.samples.blueprint.idverifier.client.RandomIDChoice"></bean> + </argument> + + <property name="bankinfobeanid"> + <idref component-id="bankinfo" /> + </property> + + <property name="svcreg4cro"> + <service auto-export="disabled" + ranking="100"> + <description>Inlined service about querying credit records.</description> + <interfaces> + <value>org.apache.aries.samples.blueprint.idverifier.api.CreditRecordOperation</value> + </interfaces> + <service-properties> + <entry key="mode" value="formal"> + </entry> + </service-properties> + <registration-listener + registration-method="reg" unregistration-method="unreg"> + <bean class="org.apache.aries.samples.blueprint.idverifier.client.CreditQueryRegistrationListener"> + <description>Inlined service registration bean</description> + </bean> + </registration-listener> + <bean class="org.apache.aries.samples.blueprint.idverifier.client.CreditRecordOperationImpl"> + <description>Inlined bean for CreditRecordOperation interface implementation</description> + <argument index="0"> + <description>inlined bean for CreditRecordStore</description> + <bean class="org.apache.aries.samples.blueprint.idverifier.client.CreditRecordStore"> + <argument index="0"> + <set> + <bean class="org.apache.aries.samples.blueprint.idverifier.client.CreditRecordFactory" + factory-method="staticCreateBean"> + <argument> + <value>310115197011076874:003:2009-12-30:good:4rd donation to charity.</value> + </argument> + </bean> + <bean factory-ref="creditrecordfactory" factory-method="dynamicCreateBean"> + <argument> + <value>310115197011076874:004:2009-12-18:good:3rd donation to charity.</value> + </argument> + </bean> + <bean class="org.apache.aries.samples.blueprint.idverifier.client.CreditRecord"> + <argument> + <value>310115197011277844:001:2009-12-29:good:Donation to charity</value> + </argument> + </bean> + <bean class="org.apache.aries.samples.blueprint.idverifier.client.CreditRecord"> + <argument> + <value>310115197011277844:002:2009-12-01:bad:No pay to bill.</value> + </argument> + </bean> + <bean class="org.apache.aries.samples.blueprint.idverifier.client.CreditRecord"> + <argument> + <value>110108197710016853:002:2009-12-02:good:Paied the bill.</value> + </argument> + </bean> + <bean class="org.apache.aries.samples.blueprint.idverifier.client.CreditRecord"> + <argument> + <value>110108197710016853:001:1977-10-01:good:I'm born.</value> + </argument> + </bean> + <bean class="org.apache.aries.samples.blueprint.idverifier.client.CreditRecord"> + <argument> + <value>11010819541001366X:001:1954-10-01:good:I'm born.</value> + </argument> + </bean> + </set> + </argument> + </bean> + </argument> + </bean> + </service> + </property> + <property name="bpcontainer" ref="blueprintContainer"/> + <property name="bpbundlecontext" ref="blueprintBundleContext"/> + </bean> + + <bean id="bankinfo" + class="org.apache.aries.samples.blueprint.idverifier.client.BankInfo"> + <property name="bankname" value="Bank of China" /> + <property name="bankaddress"> + <value type="java.lang.String">333, Huai Hai Zhong Road, Lu Wan District, Shanghai, China</value> + </property> + <property name="banklegalpersonname" value="Wang San"></property> + <property name="bankregistrationnumber" value="1000000000012345"></property> + </bean> + + <bean id="creditrecordfactory" class="org.apache.aries.samples.blueprint.idverifier.client.CreditRecordFactory" + destroy-method="creationStatistics"> + <argument value="CreditRecord"/> + </bean> + +</blueprint> Added: incubator/aries/trunk/samples/blueprint-sample-idverifier/blueprint-sample-idverifier-server/pom.xml URL: http://svn.apache.org/viewvc/incubator/aries/trunk/samples/blueprint-sample-idverifier/blueprint-sample-idverifier-server/pom.xml?rev=899972&view=auto ============================================================================== --- incubator/aries/trunk/samples/blueprint-sample-idverifier/blueprint-sample-idverifier-server/pom.xml (added) +++ incubator/aries/trunk/samples/blueprint-sample-idverifier/blueprint-sample-idverifier-server/pom.xml Sat Jan 16 15:20:44 2010 @@ -0,0 +1,65 @@ +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.aries.samples</groupId> + <artifactId>blueprint-sample-idverifier</artifactId> + <version>1.0.0-incubating-SNAPSHOT</version> + </parent> + + <artifactId>org.apache.aries.samples.blueprint.idverifier.server</artifactId> + <name>Apache Aries Blueprint Sample - ID Verifier Server</name> + <packaging>bundle</packaging> + <description> + Example blueprint application to demo inlined managers definitions. + </description> + + <build> + <plugins> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName> +<!-- + <Bundle-Blueprint>/test.xml</Bundle-Blueprint> +--> + </instructions> + </configuration> + </plugin> + </plugins> + </build> + <dependencies> + <dependency> + <groupId>org.eclipse</groupId> + <artifactId>osgi</artifactId> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.apache.aries.blueprint</groupId> + <artifactId>org.apache.aries.blueprint.api</artifactId> + </dependency> + <dependency> + <groupId>org.apache.aries.samples</groupId> + <artifactId>org.apache.aries.samples.blueprint.idverifier.api</artifactId> + <version>${pom.version}</version> + </dependency> + </dependencies> +</project> Added: incubator/aries/trunk/samples/blueprint-sample-idverifier/blueprint-sample-idverifier-server/src/main/java/org/apache/aries/samples/blueprint/idverifier/server/ComplexVerifierRegistrationListener.java URL: http://svn.apache.org/viewvc/incubator/aries/trunk/samples/blueprint-sample-idverifier/blueprint-sample-idverifier-server/src/main/java/org/apache/aries/samples/blueprint/idverifier/server/ComplexVerifierRegistrationListener.java?rev=899972&view=auto ============================================================================== --- incubator/aries/trunk/samples/blueprint-sample-idverifier/blueprint-sample-idverifier-server/src/main/java/org/apache/aries/samples/blueprint/idverifier/server/ComplexVerifierRegistrationListener.java (added) +++ incubator/aries/trunk/samples/blueprint-sample-idverifier/blueprint-sample-idverifier-server/src/main/java/org/apache/aries/samples/blueprint/idverifier/server/ComplexVerifierRegistrationListener.java Sat Jan 16 15:20:44 2010 @@ -0,0 +1,48 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.aries.samples.blueprint.idverifier.server; + +import java.util.Iterator; +import java.util.Map; +import java.util.Set; + +/** + * @author forrestxm + * + */ +public class ComplexVerifierRegistrationListener { + + public void reg(PersonIDVerifierComplexImpl svcobject, Map props){ + //svcobject.doAfterReg(); + System.out.println("********Registered bean "+svcobject.getClass().getName()+" as a service**********"); + System.out.println("********Print service properties**************"); + Set keyset = props.keySet(); + Iterator iter = keyset.iterator(); + while(iter.hasNext()){ + Object keyobj = iter.next(); + Object valueobj = props.get(keyobj); + System.out.println(keyobj + "=" + valueobj); + } + + } + public void unreg(PersonIDVerifierComplexImpl svcobject, Map props){ + System.out.println("********Unregistering service bean "+svcobject.getClass().getName()+"**********"); + } + +} Added: incubator/aries/trunk/samples/blueprint-sample-idverifier/blueprint-sample-idverifier-server/src/main/java/org/apache/aries/samples/blueprint/idverifier/server/PersonIDVerifierComplexImpl.java URL: http://svn.apache.org/viewvc/incubator/aries/trunk/samples/blueprint-sample-idverifier/blueprint-sample-idverifier-server/src/main/java/org/apache/aries/samples/blueprint/idverifier/server/PersonIDVerifierComplexImpl.java?rev=899972&view=auto ============================================================================== --- incubator/aries/trunk/samples/blueprint-sample-idverifier/blueprint-sample-idverifier-server/src/main/java/org/apache/aries/samples/blueprint/idverifier/server/PersonIDVerifierComplexImpl.java (added) +++ incubator/aries/trunk/samples/blueprint-sample-idverifier/blueprint-sample-idverifier-server/src/main/java/org/apache/aries/samples/blueprint/idverifier/server/PersonIDVerifierComplexImpl.java Sat Jan 16 15:20:44 2010 @@ -0,0 +1,151 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.aries.samples.blueprint.idverifier.server; + +/** + * @author forrestxm + * + */ + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Map; +import java.util.Set; + +import org.apache.aries.samples.blueprint.idverifier.api.PersonIDVerifier; + +public class PersonIDVerifierComplexImpl extends PersonIDVerifierSimpleImpl + implements PersonIDVerifier { + private String datepattern; + private Map<String, String> definedAreacode; + private int[] coefficient; + + @Override + public boolean verify() { + boolean b = false; + b = super.isValidID() && super.isValidSuffix() + && this.isValidBirth() && this.isValidArea() + && this.isValidCheckCode(); + return b; + } + + @Override + boolean isValidBirth(){ + String birthdate = toDateFormat(getBirthcode(), "-"); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + try { + Date birthday = sdf.parse(birthdate); + SimpleDateFormat sdf_usecustom = new SimpleDateFormat(datepattern); + this.setBirth_str(sdf_usecustom.format(birthday)); + return true; + } catch (ParseException e) { + e.printStackTrace(); + } + return false; + } + + @Override + boolean isValidArea() { + boolean b = false; + if (super.isValidArea() && definedAreacode.containsValue(getAreacode())) { + b = true; + Set<String> keys = definedAreacode.keySet(); + for (String key:keys){ + String value = definedAreacode.get(key); + if (value.equals(getAreacode())){ + super.setArea_str(key); + break; + } + } + } + return b; + } + + public boolean isValidCheckCode() { + boolean b = false; + + int[] codes = this.Char2Number(id.substring(0, 17)); + String[] validcheckcodes = { "1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2" }; + int sum = 0; + for (int i = 0; i < 17; i++) { + sum = sum + codes[i] * coefficient[i]; + } + + int remain = sum % 11; + String checkcode = id.substring(17); + + b = validcheckcodes[remain].equals(checkcode); + return b; + } + + private int[] Char2Number(String id) { + int[] numbers = new int[17]; + for (int i = 0; i < 17; i++) { + numbers[i] = Integer.parseInt(new Character(id.charAt(i)).toString()); + } + return numbers; + } + + /** + * @return the datepattern + */ + public String getDatepattern() { + return datepattern; + } + + /** + * @param datepattern + * the datepattern to set + */ + public void setDatepattern(String datepattern) { + this.datepattern = datepattern; + } + + /** + * @return the definedAreacode + */ + public Map<String, String> getDefinedAreacode() { + return definedAreacode; + } + + /** + * @param definedAreacode + * the definedAreacode to set + */ + public void setDefinedAreacode(Map<String, String> definedAreacode) { + this.definedAreacode = definedAreacode; + } + + /** + * @return the coefficient + */ + public int[] getCoefficient() { + return coefficient; + } + + /** + * @param coefficient + * the coefficient to set + */ + public void setCoefficient(int[] coefficient) { + this.coefficient = coefficient; + } + +} Added: incubator/aries/trunk/samples/blueprint-sample-idverifier/blueprint-sample-idverifier-server/src/main/java/org/apache/aries/samples/blueprint/idverifier/server/PersonIDVerifierSimpleImpl.java URL: http://svn.apache.org/viewvc/incubator/aries/trunk/samples/blueprint-sample-idverifier/blueprint-sample-idverifier-server/src/main/java/org/apache/aries/samples/blueprint/idverifier/server/PersonIDVerifierSimpleImpl.java?rev=899972&view=auto ============================================================================== --- incubator/aries/trunk/samples/blueprint-sample-idverifier/blueprint-sample-idverifier-server/src/main/java/org/apache/aries/samples/blueprint/idverifier/server/PersonIDVerifierSimpleImpl.java (added) +++ incubator/aries/trunk/samples/blueprint-sample-idverifier/blueprint-sample-idverifier-server/src/main/java/org/apache/aries/samples/blueprint/idverifier/server/PersonIDVerifierSimpleImpl.java Sat Jan 16 15:20:44 2010 @@ -0,0 +1,229 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +/** + * @author forrestxm + * + */ +package org.apache.aries.samples.blueprint.idverifier.server; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.apache.aries.samples.blueprint.idverifier.api.PersonIDVerifier; + +public class PersonIDVerifierSimpleImpl implements PersonIDVerifier { + String areacode; + String birthcode; + String suffixcode; + + String id; + + String area_str; + String birth_str; + String gender_str; + + static final String GENDER_MAN = "man"; + static final String GENDER_WOMAN = "woman"; + + /** + * @return the area_str + */ + public String getArea_str() { + return area_str; + } + + /** + * @param areaStr the area_str to set + */ + public void setArea_str(String areaStr) { + area_str = areaStr; + } + + /** + * @return the birth_str + */ + public String getBirth_str() { + return birth_str; + } + + /** + * @param birthStr the birth_str to set + */ + public void setBirth_str(String birthStr) { + birth_str = birthStr; + } + + /** + * @return the gender_str + */ + public String getGender_str() { + return gender_str; + } + + /** + * @param genderStr the gender_str to set + */ + public void setGender_str(String genderStr) { + gender_str = genderStr; + } + + /** + * @return the areacode + */ + public String getAreacode() { + return areacode; + } + + /** + * @param areacode the areacode to set + */ + public void setAreacode(String areacode) { + this.areacode = areacode; + } + + /** + * @return the birthcode + */ + public String getBirthcode() { + return birthcode; + } + + /** + * @param birthcode the birthcode to set + */ + public void setBirthcode(String birthcode) { + this.birthcode = birthcode; + } + + /** + * @return the suffixcode + */ + public String getSuffixcode() { + return suffixcode; + } + + /** + * @param suffixcode the suffixcode to set + */ + public void setSuffixcode(String suffixcode) { + this.suffixcode = suffixcode; + } + + /** + * @return the id + */ + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + + } + + public String getArea() { + + return this.getArea_str(); + } + + public String getBirthday() { + + return this.getBirth_str(); + } + + public String getGender() { + return this.getGender_str(); + } + + + + public boolean verify() { + boolean b = false; + b = isValidID() && isValidArea() && isValidBirth() && isValidSuffix(); + return b; + } + + boolean isValidID(){ + boolean b = false; + if (this.id.length() == 18) { + b = true; + this.setAreacode(this.id.substring(0, 6)); + this.setBirthcode(this.id.substring(6, 14)); + this.setSuffixcode(this.id.substring(14)); + } + return b; + } + + boolean isValidArea(){ + boolean b = false; + Pattern p = Pattern.compile("\\d{6}"); + Matcher m = p.matcher(getAreacode()); + if (m.matches()){ + this.setArea_str(getAreacode()); + b = true; + } + return b; + } + + boolean isValidBirth() { + String birthdate = toDateFormat(getBirthcode(), "-"); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + try { + this.setBirth_str(sdf.format(sdf.parse(birthdate))); + return true; + } catch (ParseException e) { + e.printStackTrace(); + } + return false; + } + + boolean isValidSuffix() { + boolean b = false; + Pattern p = Pattern.compile("\\d{3}[\\dX]"); + Matcher m = p.matcher(getSuffixcode()); + if(m.matches()){ + b = true; + setGender(getSuffixcode()); + } + return b; + } + + String toDateFormat(String s, String delimiter) { + StringBuffer sb = new StringBuffer(); + sb.append(s.substring(0, 4)); + sb.append(delimiter); + sb.append(s.substring(4, 6)); + sb.append(delimiter); + sb.append(s.substring(6)); + return sb.toString(); + } + + private void setGender(String s){ + int gender = Integer.parseInt(new Character(s.charAt(2)).toString()); + int remain = gender % 2; + if (remain == 0 ){ + this.setGender_str(GENDER_WOMAN); + } else { + this.setGender_str(GENDER_MAN); + } + } + +} Added: incubator/aries/trunk/samples/blueprint-sample-idverifier/blueprint-sample-idverifier-server/src/main/java/org/apache/aries/samples/blueprint/idverifier/server/SimpleVerifierRegistrationListener.java URL: http://svn.apache.org/viewvc/incubator/aries/trunk/samples/blueprint-sample-idverifier/blueprint-sample-idverifier-server/src/main/java/org/apache/aries/samples/blueprint/idverifier/server/SimpleVerifierRegistrationListener.java?rev=899972&view=auto ============================================================================== --- incubator/aries/trunk/samples/blueprint-sample-idverifier/blueprint-sample-idverifier-server/src/main/java/org/apache/aries/samples/blueprint/idverifier/server/SimpleVerifierRegistrationListener.java (added) +++ incubator/aries/trunk/samples/blueprint-sample-idverifier/blueprint-sample-idverifier-server/src/main/java/org/apache/aries/samples/blueprint/idverifier/server/SimpleVerifierRegistrationListener.java Sat Jan 16 15:20:44 2010 @@ -0,0 +1,48 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.aries.samples.blueprint.idverifier.server; + +import java.util.Iterator; +import java.util.Map; +import java.util.Set; + +/** + * @author forrestxm + * + */ +public class SimpleVerifierRegistrationListener { + + public void reg(PersonIDVerifierSimpleImpl svcobject, Map props){ + //svcobject.doAfterReg(); + System.out.println("********Registered bean "+svcobject.getClass().getName()+" as a service**********"); + System.out.println("********Print service properties**************"); + Set keyset = props.keySet(); + Iterator iter = keyset.iterator(); + while(iter.hasNext()){ + Object keyobj = iter.next(); + Object valueobj = props.get(keyobj); + System.out.println(keyobj + "=" + valueobj); + } + + } + public void unreg(PersonIDVerifierSimpleImpl svcobject, Map props){ + System.out.println("********Unregistering service bean "+svcobject.getClass().getName()+"**********"); + } + +} Added: incubator/aries/trunk/samples/blueprint-sample-idverifier/blueprint-sample-idverifier-server/src/main/resources/OSGI-INF/blueprint/blueprint-sample-idverifier-server.xml URL: http://svn.apache.org/viewvc/incubator/aries/trunk/samples/blueprint-sample-idverifier/blueprint-sample-idverifier-server/src/main/resources/OSGI-INF/blueprint/blueprint-sample-idverifier-server.xml?rev=899972&view=auto ============================================================================== --- incubator/aries/trunk/samples/blueprint-sample-idverifier/blueprint-sample-idverifier-server/src/main/resources/OSGI-INF/blueprint/blueprint-sample-idverifier-server.xml (added) +++ incubator/aries/trunk/samples/blueprint-sample-idverifier/blueprint-sample-idverifier-server/src/main/resources/OSGI-INF/blueprint/blueprint-sample-idverifier-server.xml Sat Jan 16 15:20:44 2010 @@ -0,0 +1,88 @@ +<?xml version="1.0" encoding="UTF-8"?> + <!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version + 2.0 (the "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 Unless required by + applicable law or agreed to in writing, software distributed under the + License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + CONDITIONS OF ANY KIND, either express or implied. See the License for + the specific language governing permissions and limitations under the + License. + --> +<blueprint default-activation="eager" default-availability="mandatory" + default-timeout="300000" xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"> + <description>Apache Aries Blueprint Sample - Complex Server</description> + + <bean id="simpleverifier" + class="org.apache.aries.samples.blueprint.idverifier.server.PersonIDVerifierSimpleImpl"> + <description>ID Verifier Simple Implementation</description> + </bean> + + <service id="simpleverifierservice" ref="simpleverifier" + interface="org.apache.aries.samples.blueprint.idverifier.api.PersonIDVerifier" + ranking="100"> + <description>ID Verifier Simple Service</description> + <service-properties> + <entry key="mode" value="simple" /> + </service-properties> + <registration-listener registration-method="reg" unregistration-method="unreg"> + <bean class="org.apache.aries.samples.blueprint.idverifier.server.SimpleVerifierRegistrationListener"/> + </registration-listener> + </service> + + <bean id="complexverifier" + class="org.apache.aries.samples.blueprint.idverifier.server.PersonIDVerifierComplexImpl" + activation="lazy"> + <description>ID Verifier Complex Implementation</description> + <property name="definedAreacode"> + <map key-type="java.lang.String" value-type="java.lang.String"> + <entry key="pudong" value="310115" /> + <entry key="putuo" value="310107" /> + <entry key="beijinghaidian" value="110108"/> + </map> + </property> + <property name="coefficient"> + <array value-type="int"> + <value>7</value> + <value>9</value> + <value>10</value> + <value>5</value> + <value>8</value> + <value>4</value> + <value>2</value> + <value>1</value> + <value>6</value> + <value>3</value> + <value>7</value> + <value>9</value> + <value>10</value> + <value>5</value> + <value>8</value> + <value>4</value> + <value>2</value> + </array> + </property> + <property name="datepattern" value="yyyy/MM/dd"/> + </bean> + + <service id="complexverifierservice" + auto-export="disabled" + ranking="200" + ref="complexverifier"> + <description>ID Verifier Complex Service</description> + <interfaces> + <value>org.apache.aries.samples.blueprint.idverifier.api.PersonIDVerifier</value> + </interfaces> + <service-properties> + <entry key="mode" value="complex" /> + </service-properties> + <registration-listener registration-method="reg" unregistration-method="unreg"> + <bean class="org.apache.aries.samples.blueprint.idverifier.server.ComplexVerifierRegistrationListener"/> + </registration-listener> + </service> +</blueprint> Added: incubator/aries/trunk/samples/blueprint-sample-idverifier/pom.xml URL: http://svn.apache.org/viewvc/incubator/aries/trunk/samples/blueprint-sample-idverifier/pom.xml?rev=899972&view=auto ============================================================================== --- incubator/aries/trunk/samples/blueprint-sample-idverifier/pom.xml (added) +++ incubator/aries/trunk/samples/blueprint-sample-idverifier/pom.xml Sat Jan 16 15:20:44 2010 @@ -0,0 +1,93 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.apache.aries.samples</groupId> + <artifactId>samples</artifactId> + <version>1.0.0-incubating-SNAPSHOT</version> + </parent> + + <groupId>org.apache.aries.samples</groupId> + <version>1.0.0-incubating-SNAPSHOT</version> + <artifactId>blueprint-sample-idverifier</artifactId> + <name>Apache Aries Blueprint Sample - ID Verifier</name> + <packaging>pom</packaging> + + <repositories> + <!-- <repository> + <id>apache.snapshots</id> + <name>Apache Snapshots Repository</name> + <url>https://repository.apache.org/content/groups/snapshots-group</url> + <layout>default</layout> + <snapshots> + <enabled>true</enabled> + <updatePolicy>daily</updatePolicy> + <checksumPolicy>ignore</checksumPolicy> + </snapshots> + <releases> + <enabled>false</enabled> + </releases> + </repository> + --> + </repositories> + + <build> + <pluginManagement> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <configuration> + <source>1.5</source> + <target>1.5</target> + </configuration> + </plugin> + </plugins> + </pluginManagement> + </build> + + <dependencyManagement> + <dependencies> + + <dependency> + <groupId>org.eclipse</groupId> + <artifactId>osgi</artifactId> + <version>3.5.0.v20090520</version> + </dependency> + + <dependency> + <groupId>org.apache.aries.blueprint</groupId> + <artifactId>org.apache.aries.blueprint.api</artifactId> + <version>${pom.version}</version> + </dependency> + + + </dependencies> + </dependencyManagement> + + <modules> + <module>blueprint-sample-idverifier-api</module> + <module>blueprint-sample-idverifier-server</module> + <module>blueprint-sample-idverifier-client</module> +<module>blueprint-sample-idverifier-assembly</module> + </modules> + +</project> Added: incubator/aries/trunk/samples/blueprint-sample-idverifier/readme.txt URL: http://svn.apache.org/viewvc/incubator/aries/trunk/samples/blueprint-sample-idverifier/readme.txt?rev=899972&view=auto ============================================================================== --- incubator/aries/trunk/samples/blueprint-sample-idverifier/readme.txt (added) +++ incubator/aries/trunk/samples/blueprint-sample-idverifier/readme.txt Sat Jan 16 15:20:44 2010 @@ -0,0 +1,42 @@ +################################################################################ +# Copyright 2010 +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +################################################################################ + +Apache Aries Samples +---------------------------------------------------------------------- + +This sample demonstrates blueprint inlined managers usage. + +This README uses the following aliases to describe directories. These aliases should be replaced with your actual directory paths. + %SAMPLE_HOME% refers to the root directory where Aries samples are extracted. + + +BUILD +----- +1. cd %SAMPLE_HOME%/blueprint-sample-idverifier +2. maven clean install + + +RUN +--- +1. cd %SAMPLE_HOME%/blueprint-sample-idverifier/blueprint-sample-idverifier-assembly/target +2. run.bat|.sh + +MEMO +---- +After the sample is running, you can connect to it via JConsole to check the sample bundles via blueprint MBeans. Modified: incubator/aries/trunk/samples/pom.xml URL: http://svn.apache.org/viewvc/incubator/aries/trunk/samples/pom.xml?rev=899972&r1=899971&r2=899972&view=diff ============================================================================== --- incubator/aries/trunk/samples/pom.xml (original) +++ incubator/aries/trunk/samples/pom.xml Sat Jan 16 15:20:44 2010 @@ -43,6 +43,7 @@ <modules> <module>helloworld-samples</module> <module>blog-sample</module> + <module>blueprint-sample-idverifier</module> </modules> </project>
