// CDDL HEADER START // // The contents of this file are subject to the terms of the // Common Development and Distribution License, Version 1.0 only // (the "License"). You may not use this file except in compliance // with the License. // // You can obtain a copy of the license at // trunk/opends/resource/legal-notices/OpenDS.LICENSE // or https://OpenDS.dev.java.net/OpenDS.LICENSE. // See the License for the specific language governing permissions // and limitations under the License. // // When distributing Covered Code, include this CDDL HEADER in each // file and include the License file at // trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, // add the following below this CDDL HEADER, with the fields enclosed // information: // Portions Copyright [yyyy] [name of copyright owner] // // CDDL HEADER END // // // Copyright 2008 Sun Microsystems, Inc. import netscape.ldap.*; import netscape.ldap.util.*; import java.util.*; import java.io.*; import java.lang.Thread; public class Worker extends Thread { Server server; Client client; public Worker (Client client, Server server) { super(); try { this.server = server; this.client = client; this.start(); } catch (Exception e) { e.printStackTrace(); } } public void run () { String value=""; String[] attributes = new String []{client.attr}; LDAPConnection connection = new LDAPConnection(); while (true) { try { connection.connect( server.host, server.port); // bind if needed if ( client.bindDN != null ) { // println ("INFO", "Binding as \"" + client.bindDN + "\""); connection.bind(client.bindDN, client.bindPW); } /* try { synchronized (client.lock) { client.lock.wait(); } } catch ( InterruptedException ie ) { ie.printStackTrace(); }*/ while (true) { //try { client.inc_srchs_started(); value=(String) client.ValueList.get(client.random.nextInt(client.ValueList.size())); //println ("INFO", "Modifying \""+myDN+"\" (replace "+ attribute + ":" + value + ") on master " + master.toString()); //connection.search(client.suffix, LDAPv3.SCOPE_SUB, new String (client.attr + "=" + value ), new String []{}, false ); //connection.search(client.suffix, LDAPv3.SCOPE_SUB, new String (client.attr + "=" + value ), new String []{client.attr}, false ); LDAPSearchResults results=connection.search(client.suffix, LDAPv3.SCOPE_SUB, new String (client.attr + "=" + value ), attributes, false ); while ( results.hasMoreElements() ) { LDAPEntry entry=results.next(); } client.inc_srchs_done(); results=null; //} catch (LDAPException e) { // println("ERROR", e.toString()); // Client.wait_after_error(); /* try { synchronized (client.lock) { client.lock.wait(); } } catch ( InterruptedException ie ) { ie.printStackTrace(); } */ //} } } catch( LDAPException e ) { println( "ERROR" , e.toString() ); // make sure we are disconnected try { connection.disconnect(); } catch( LDAPException e2 ) { println( "ERROR" , e2.toString() ); } // System.exit(1); } } } private String getDate() { // Initialize the today's date string String DATE_FORMAT = "yyyy/MM/dd:HH:mm:ss"; java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(DATE_FORMAT); Calendar c1 = Calendar.getInstance(); // today return("[" + sdf.format(c1.getTime()) + "]"); } private void println(String level, String msg) { System.out.println (getDate() + " - " + level + ": (" + server + ") " + msg ); } }